i+++j即为i+j,系统再把i加一是吗

[复制链接]
查看11 | 回复5 | 2012-1-16 09:12:51 | 显示全部楼层 |阅读模式
编译器对操作符的理解是使用贪心法(或者说大嘴法)的所以i+++j被理解为(i++)+j另外如果是i+++++j的话,就会理解为( (i++) ++) +j,当然这个表达式本身是不合法的,但是编译器就会这么认为所以说,应该用括号来限制操作符,显式的表明自己的意图...
回复

使用道具 举报

千问 | 2012-1-16 09:12:51 | 显示全部楼层
不要讨论这样的问题,没有意义!这类晦涩难懂的语句一定要加括号,或者分开写,不要天真的以为写成一行,程序运行效率就高了!代码是写给人看的,你写的每一行代码要让一个C的初学者都能很容易的看懂,当然,整体的逻辑别人不一定能很快就能看明白!...
回复

使用道具 举报

千问 | 2012-1-16 09:12:51 | 显示全部楼层
对头i++ 是后加一,它参与到表达式的时候会在计算完表达式的结果后,再加一;可以这样检验一下int i=1 ,j=1;printf("%d",i+++j);printf("%d", i);结果是 2 2...
回复

使用道具 举报

千问 | 2012-1-16 09:12:51 | 显示全部楼层
是的...
回复

使用道具 举报

千问 | 2012-1-16 09:12:51 | 显示全部楼层
是的...
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行