【发布时间】:2022-12-09 03:33:15
【问题描述】:
我一直试图弄清楚为什么下面代码的输出是 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
我一直在尝试更改值和运算符,但每次都没有执行减量打印。从我阅读的主题中可以看出,印刷品内递减应该是可能的,但我不确定是什么导致它无法执行。
【问题讨论】:
-
这称为未定义行为
-
不,@DanielA.White,不是。
-
2 2 是我期望的输出。
-
在
x--, y--之前使用 x 和 y 的值递减后 -
您无法从输出中判断采用了哪个分支,因为两种方式都会产生相同的输出。
标签: c if-statement decrement