我不明白为什么在if语句之前++ b [1]等于1,但在if-statment ++ b [1]之后等于0.为什么++ b [1]不会增加if语句?
#include <stdio.h>
int main()
{
int c = 0;
int b[3] = {4};
printf("%d\n", ++b[1]); // return 1
b[1]--;
if((c-- && ++b[1])|| b[0]++)
{
printf("%d\n", b[1]); // return 0
printf("%d\n", c); // return -1
}
return 0;
}
答案 0 :(得分:3)
答案 1 :(得分:2)
这里只有一些令人困惑的操作员使用情况。
c--
是 postfix 减量,因此在条件语句c
中,在递减之前会被评估为false(因为它是0
)。 &&
短路并且仅在第一个条件为真时评估第二个条件,我们不评估++b[1]
,而是以b[0]++
的真实性为条件。