![](/img/trans.png)
[英]Are postfix and prefix increment and decrement expressions lvalues in C11?
[英]Why are expressions not processed after a postfix increment and a conjunction operator?
我遇到了一個問題,促使我做一些研究。 我發現有一段這樣的代碼:
#include <stdio.h>
int main(void)
{
char i = 0;
i++ && puts("Hi!");
printf("%hhd\n", i);
}
只處理增量,並輸出:
1
如果后綴增量被前綴 1 替換,則情況並非如此,它輸出:
Hi!
1
為什么它的行為如此?
如果問題很愚蠢,我深表歉意。
在
i++ && puts("Hi!");
i
在增量之前進行評估。 因為它是0
表達式的第二部分不再需要計算, 0 && 0
是0
, 0 && 1
也是0
。
帶有預增量的相同表達式意味着在計算時i
將是1
,在這種情況下,表達式的第二部分很重要,因為1 && 1
是可能的,但1 && 0
也是可能的,並且這些將呈現不同結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.