简单的C语言问题a=1;b=2;c=a>b&&++a;pr
a=1;b=2;c=a>b&&++a; printf("a=%d,b=%d,c=%d\n",a,b,c); 结果是a=1 b=2 c=0 为什么? 我刚开始学习,一点不懂,请详细一些,还有就是应该像看哪些方面的知识才能解决这样的问题
c=a>b&&++a; 这一句中要注意各种运算符的优先级,自增运算符最高,比较运算符其次,逻辑与运算符最低。而在这里自增运算符位于左边,它表示b先执行加1的操作然后再参与别的运算。所以这一句等效于 c=(a>b)&&(++a); 其执行顺序为:先比较a>b,由于1<2,所以得到的值为逻辑假(用整型表示为0),由于编译器优化的原因,当逻辑与算式的左边为0时就不再执行右边的运算,而直接输出结果0(同样的,当逻辑或版算式的左边为1时也不再执行右边的运算,而直接输出结果1),因此右边的自加操作并没有被执行。 输出语句中将a、b、c都以整型输出,因此结果应该为 a=1,b=2,c=0 C语言方面入门级教程首推谭浩强的《C程序设计(第二版)》,这里提供一个免费下载的页面 点击“下载地址”后会弹出一个新窗口,再点击“下载地址”旁边的链接即可下载(不用去理会上面的注册说明)