有关c语言的++与--

近期在看谭浩强先生的c程序设计,看到有关自增自减的地方,感觉需要做个记录。

个人观点:对于i++可以解释为三条语句:

tmp = i;

i = i+1;

return tmp;

这里返回的是tmp这个变量,所以说i++在表达式里面可以看成i,因为他们两个的值相等,只不过后面i自增了1。

所以对于表达式 j = i++ + i++ + i++;可以表示为两条语句: j = i + i + i; i = i +3;//因为有三个i++

这样解释的原因是在c语言里(++)后增运算符的优先级是高于(+)的。

对于++i来说可以理解成一下两条语句:

i = i + 1;

return i;

注意,这里返回的是i这个变量,所以++i是先自增一然后再去执行其他的操作,所以对于++i可以看成(i+1)。

对于表达式 j = ++i + ++i + ++i;可以解释为:j = (i+1) + (i +1) + (i + 1); i = i + 3;

同样是因为(++)先增运算符的优先级高于(+).


对于先减和后减运算符也是一样的,同样可以这样来理解。

最后要注意的就是,不同的编译器对于表达式的左结合还是右结合的运算顺序是不同。对于像

printf("%d %d", i, i++);这样的语句还是应该引起注意的。为了好的一致性,并不推荐这样来写。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值