簡體   English   中英

與i ++相同,但操作更復雜

[英]Same as i++ but for more complex operation

我沒有任何問題。 這個問題是關於C語言的

假設我有一個類似的功能:

int func()
{
    static int i = 1;
    return(i++);
}

現在,我不想做i++i+=1 ),我想做i *= 42; 但仍會返回乘法之前的值。 我想知道是否有一種方法可以像i++工作(在一個表達式中,取i值,然后i *= 42 )。

int func()
{
    static int i = 1;
    int tmp = i;
    i *= 42;
    return tmp;
}

Postfix ++--是唯一的C運算符,用於修改對象並產生該對象的先前值。 如果您想執行除增量1或減1之外的任何操作,則必須將以前的值存儲在臨時文件中。

如果要設計自己的語言,則可以實現“反逗號”運算符,該運算符產生其左操作數而不是右操作數。 (現有的逗號運算符計算其左操作數,然后計算其右操作數,然后產生右操作數的值。)

例如,如果“反逗號”的拼寫是“ ,, ,則可以執行以下操作:

return i ,, i *= 42; /* THIS IS NOT C */

賦值是一個表達式,它是C。所以您可以編寫代碼

int func() {
 static int i = 1;
 return(i *= 42);
}

當然,如果要在乘以之前返回i ,則需要另一個變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM