0

我遇到了一个问题,促使我进行了一些研究。我发现这样一段代码:

#include <stdio.h>

int main(void)
{
    char i = 0;
    i++ && puts("Hi!");
    printf("%hhd\n", i);
}

只处理增量,并输出:

1

如果后缀增量被前缀一替换,则情况并非如此,它会输出:

Hi!
1

为什么它会这样?

如果这个问题很愚蠢,我很抱歉。

4

1 回答 1

2

i++ &&  puts("Hi!");

i在增量之前进行评估。因为它是0表达式的第二部分,不再需要计算,0 && 0is 00 && 1is also 0

具有预增量的相同表达式意味着i1在对其进行评估时,在这种情况下,表达式的第二部分很重要,因为1 && 1是可能的,但1 && 0也是可能的,这些将呈现不同的结果。

于 2020-09-23T21:36:57.497 回答