我一直在寻找减少生产线使用量的方法,并且遇到了这种情况,看来效果很好。我在网上找不到任何信息,有人可以解释发生了什么吗?假设它甚至可以运行,我仍然希望x ++的评估结果为false,因此y的价值不会增加。但是确实如此!
#include <stdio.h>
int main(void)
{
int x;
int y;
x = 4;
y = 7;
x++ && y++;
printf("%d\n%d", x, y);
return (0);
}
>> 5
8
编辑:我的项目每个函数的功能限制为25行,这就是为什么我必须减少几行的原因。
编辑2:我所有的代码都经过严格的语法和格式检查器检查,该检查器禁止使用“ x ++,y ++;”。以及其他任何多行语句,所以我只是在寻找一个“ hack”来从程序中删掉一行,并且不知道为什么^^对我有用!感谢所有答复!
答案 0 :(得分:2)
逻辑运算符&&
和||
使用short-circuit evaluation。
对于两个左侧,总是进行 评估。对于&&
,如果左侧为“ true”,则还将评估右侧。对于||
则相反,如果左侧为“ false”,则将评估右侧。
在C语言中,非零值均为“ true”。只有零是“假”。
答案 1 :(得分:1)
使用表达式x++ && y++
,仅在y++
非零的情况下才对x++
求值,并且请注意x++
的求值为x
的初始值
请注意,您可以将程序缩减为
#include <stdio.h>
int main()
{
for (int x = 4, y = 7; x++ && y++, printf("%d\n%d", x, y); ) break;
}
这很好,因为您还剩24行!请注意,对于函数return 0;
,要求编译器插入隐式main
。