int a,b,c; a=b=c=1; ++a||++b&&++c a,b的值为2,1

来源:百度知道 编辑:UC知道 时间:2024/06/01 16:59:27
main()
{ int a,b,c;
a=b=c=1;
printf( ++a||++b&&++c);
printf("%d,%d",a,b);
}

为什么a=2,b=1?
与的运算符优先级高于或。不是应该先做++b么?所以++c不做才对啊。

printf( ++a||++b&&++c);
是什么意思?

应该只有里面的部分吧!

请注意这里有一个短路或||

意思是当有一个条件成立时,不进行下一个条件

++a结果为2,成立
于是不做++b&&++c,故b和c都是1

&& 优先级高于 ||

编译时
++a||++b&&++c -> ++a||(++b && ++c)

运行时,|| 短路,(++b && ++c)不会执行