一个无比简单的赋值语句程序

为什么++a最后变成零了,不应该++a=2me?求详解

img

img

表示不理解

所以结果为 1.2没问题啊

img

输出1和2,有啥问题啊?

 int a=1,b=1;
 ++a;   // 这句执行完a = 2
 printf("%d,\t",(--a)&&(++b));// (--a)&&(++b) 这里先执行,()优先级最高, (--a) = 1,(++b)==>b=2,  1 && 2 ==>得到逻辑值 1 ,所以这里输出:1,
 printf("a=%d,b=%d",a,b);   // 此时 a = 1, b = 2,输出: a=1,b=2.

最终显示在屏幕上:1, a=1,b=2

(--a)&&(++b) 结果实际上是布尔型,true 输出时被%d转化成整型,所以输出1