有关c语言的++与--

来源:互联网 发布:域名访问升级访问 编辑:程序博客网 时间:2024/04/28 01:50

近期在看谭浩强先生的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++);这样的语句还是应该引起注意的。为了好的一致性,并不推荐这样来写。


0 0
原创粉丝点击