【发布时间】:2016-03-22 22:20:29
【问题描述】:
#include<stdio.h>
int main()
{
int var = 10 ;
printf ( "\n%d %d",var==10, var = 100) ;
}
输出:
0 100
在 printf 语句中,var==10 的计算结果为 true,但我得到的输出为 0。为什么会这样?
【问题讨论】:
标签: c
#include<stdio.h>
int main()
{
int var = 10 ;
printf ( "\n%d %d",var==10, var = 100) ;
}
输出:
0 100
在 printf 语句中,var==10 的计算结果为 true,但我得到的输出为 0。为什么会这样?
【问题讨论】:
标签: c
您正在函数调用内部修改var。可以按任何顺序评估函数的参数。在这个特定的示例中,var = 100 在 var==10 之前被评估,但如果您使用不同的编译器,则无法保证行为会相同。
因为您尝试读取和修改同一表达式中的变量而没有序列点来分隔它们,所以您调用的是undefined behavior。
【讨论】: