[英]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.