<分区>
我的一个 friend 问我关于这段代码的事,我和他都不知道 if 条件下发生了什么。你们能解释一下这种情况是如何工作的吗?
int main()
{
int i;
if (i = (1, 2, 0))
printf("Mehrose");
else
printf("Hello ");
printf("%d\n", i);
return 0;
}
这段代码的输出是 Hello 0
标签 c
<分区>
我的一个 friend 问我关于这段代码的事,我和他都不知道 if 条件下发生了什么。你们能解释一下这种情况是如何工作的吗?
int main()
{
int i;
if (i = (1, 2, 0))
printf("Mehrose");
else
printf("Hello ");
printf("%d\n", i);
return 0;
}
这段代码的输出是 Hello 0
最佳答案
首先,当编译器看到我们得到的代码时进行格式化:
int main(void)
{
int i;
if(i=(1,2,0))
printf("Mehrose");
else
printf("Hello");
printf("%d\n",i);
return 0;
}
if语句可以分解:
Comma operator ,
首先计算,运算符的左侧被丢弃。这对每个运算符(operator)重复:
if(i=(1,2,0))
if(i=(2,0))
if(i=0)
assignment operator =
将值0
赋给i
,并返回表达式的右侧:
if(0)
回想一下,0
被评估为 false(“虚假”),1
被评估为 true(“真实”)。因此第一个条件失败,第二个 block 被执行。 “Hello”被打印到标准输出流,后面跟着“0”。
关于c - if 条件下发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58733176/