为什么在printf中使用相等时输出为0?

时间:2015-12-16 16:59:23

标签: c

#include<stdio.h>
int main()
{
    int var = 10 ; 
    printf ( "\n%d %d",var==10, var = 100) ;
}

输出:

0 100

在printf语句中,var==10的计算结果为true,但我得到的输出为0。为什么会这样?

1 个答案:

答案 0 :(得分:4)

您正在修改函数调用中的var。可以按任何顺序评估函数的参数。在此特定示例中,var = 100之前正在评估var==10,但如果您使用不同的编译器,则无法保证行为是相同的。

因为您试图在同一个表达式中读取和修改变量而没有序列点将它们分开,所以您正在调用undefined behavior