下面的两句有什么不同

[复制链接]
查看11 | 回复5 | 2011-11-17 22:58:57 | 显示全部楼层 |阅读模式
弄清楚!= 和 = 的优先级再说。...
回复

使用道具 举报

千问 | 2011-11-17 22:58:57 | 显示全部楼层
在C语言中!=的优先级是7,而=的优先级是14.所以"while((ch=getchar()!='\n')“这句话的意思就是:先执行getchar()!='\n'这句,然后才有ch=getchar()。所以你第一个会输出乱码,而后一个不会!...
回复

使用道具 举报

千问 | 2011-11-17 22:58:57 | 显示全部楼层
=的优先级低于!=,所以上边的先执行getchar()!='\n',执行完之后执行的是=,也就是赋值语句,而赋值表达式的值就是等号右边的值,明白了么?...
回复

使用道具 举报

千问 | 2011-11-17 22:58:57 | 显示全部楼层
应该是(ch=getchar())!='\n',不是ch=getchar()!='\n'。=的优先级比!=低,ch=getchar()!='\n'是先判断你输入的字符是否为'\n',再将比较的结果赋给ch。那么ch能得到的值要么是1要么是0,怎么可能得到你输入的字符呢。...
回复

使用道具 举报

千问 | 2011-11-17 22:58:57 | 显示全部楼层
跟编译器有关,是从左开始编译,还是从右开始编译...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行