搜索
首页 电脑/网络 软件

简单的C语言问题

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语言,一点不懂,请详细一些,还有就是应该像看哪些方面的知识才能解决这样的问题

全部回答

2006-06-13

0 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程序设计(第二版)》,这里提供一个免费下载的页面 点击“下载地址”后会弹出一个新窗口,再点击“下载地址”旁边的链接即可下载(不用去理会上面的注册说明) 。
    。

2006-06-13

49 0
c=a>b&&++a a>b值为假,&&在前面的表达式为假后就不计算后面的表达式了。 所以结果是结果是a=1 b=2 c=0 如果把&&改成&,结果就不同了,因为&还会计算后面的表达式,结果会变成a=2 b=2 c=0

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
软件
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
软件
多媒体软件
系统软件
办公软件
网络软件
图像处理软件
举报
举报原因(必选):
取消确定举报