簡體   English   中英

為什么在后綴增量和連詞運算符之后不處理表達式?

[英]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 && 000 && 1也是0

帶有預增量的相同表達式意味着在計算時i將是1 ,在這種情況下,表達式的第二部分很重要,因為1 && 1是可能的,但1 && 0也是可能的,並且這些將呈現不同結果。

暫無
暫無

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

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