#include<stdio.h>
int main()
{
int k=35;
int a=k==35;
printf("%d %dn", k==35, k=50);
printf("%d %dn", a,k=50);
return 0;
}
在第一个printf
语句中,为什么k==35
评估为0
?我认为这可能是因为k=50
赋值发生在k==35
评估之前。但是,我不明白为什么不按顺序评估printf
参数?
答案 0 :(得分:3)
printf("%d %dn", k==35, k=50);
未指定首先评估k=50
或k==35
,因此此代码具有未定义的行为。
答案 1 :(得分:1)
printf()
中的评估顺序未定义,因此导致未定义的行为。