![]() |
#2
wp2319572022-05-23 23:14
回复 楼主 fantasyhpu
|

#include "stdio.h"
int main(void)
{
int i,j;
i=2;
j=8;
j=(i=6)+(j=3);//warning在这一行
printf("%d %d",i,j);
return 0;
}
编译时(gcc 8.1.0),出现一个未定义行为的警告:
warning: operation on 'j' may be undefined [-Wsequence-point]
对于出现warning的行:
j=(i=6)+(j=3);
我的理解是,先进行i=6和j=3的赋值运算,然后再计算j=6+3,即j=9。
这一过程很清晰,怎么编译器会抛出关于j的未定义行为warning呢?