我一直试图弄清楚为什么下面的代码输出是2 2,但似乎不能弄清楚为什么。我知道else语句正在执行,但从我所读到的内容来看,我不明白为什么第一次打印没有执行。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x = 1, y = 1;
if(x++ == y++)
printf("%d%d", x--, y--);
else
printf("%d%d", x,y);
return 0;
}
最初我期望输出为0 0
我尝试过改变值和操作符,每次递减打印都没有执行。从我读到的主题来看,递减打印应该是可能的,但我不确定是什么原因使它没有执行。
3条答案
按热度按时间hmae6n7t1#
正在执行
if
块。在条件
if(x++ == y++)
中,x
的当前值与y
的当前值进行比较。两者都为1,因此比较结果为真,并且x
和y
作为副作用都递增。因此,下面的语句运行:
它打印
x
和y
的当前值,它们都是2,并且作为副作用,它们都递减。如果在此之后打印它们,您会看到它们都是1。qyyhg6bp2#
为了理解代码,您可以执行以下操作:
kb5ga3dv3#
很多帮助你得到我的推荐使用前缀
++x