abh*_*nda -1 c operator-precedence
main()
{
int a,b=0,c=1,d=1;
a=++b&&++c||++d;
printf("%d %d %d",b,c,d); //1 2 1
b=0,c=1,d=1;
a=b&&++c||++d;
printf("%d %d %d",b,c,d); //0 1 2
}
Run Code Online (Sandbox Code Playgroud)
为什么第二个printf给出答案0 1 2而不是0 2 1?
为什么第二个printf给出答案0 1 2而不是0 2 1?
&&是短路的.
在
a=b&&++c||++d;
Run Code Online (Sandbox Code Playgroud)
++c如果b是0这种情况,将不会被评估.因此c,1而不是2.
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |