分类：电脑/网络-软件
问题：简单的C语言问题a=1;b=2;c=a&gt;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程序设计（第二版）》，这里提供一个免费下载的页面
 
点击“下载地址”后会弹出一个新窗口，再点击“下载地址”旁边的链接即可下载（不用去理会上面的注册说明）