对i++和++i的理解

来源:互联网 发布:英国网络运营商 编辑:程序博客网 时间:2024/06/03 15:59

i++  先使用后增加

++i  先增加后使用

实际上这我们需要对这两句话做点补充 先使用等到语句结束时候再增加 对++i同样是这样 我们最熟悉的结束标志莫过于“;”了

不过还有其他两种 “,’”  与 函数的括号

举几个简单的例子;

简单的定义一个变量 

i  =  2;

num = (i++)+(i++)+(i++)+(i++); 这时候 num = i + i+ i +i =8; 语句结束 i = i+1+1+1+1=6

num = (++i)+(++i)+(++i)+(++i); 这时候 num = 19  首先计算 (++i) +(++i) 先做两次自增运算 即 i+1+1=4 第三个++i 时候i =5 第四个为6 遇到;开始使用i值

= 4+4+5+6=19;

i = i * ((i ++)+(++i)) ; i = 19    ;先计算括号内的++i 这时候 i = 3  开始运算 3*(3+3) 结束时 再执行i++的自增 即3*(3+3)+1 =19

i=(i++)+(++i)+(i++)+(++i); i =15  (3+3+3+4+2)=15

i =(++i ) + (i++) +  (++i) +(i++); i=(3+3+4+4+2)=16

那么在遇到函数调用时候也是这样吗

假设函数fun(++i,i++) 令a = ++i;b= i ++  我们需要知道函数调用时 传参从右边开始 所以先看 i++  这时候b=2,继续往右看,遇到“,”所以还是自增 这时候 i=3

开始执行++i ,先自增 i=4,再往右为函数括号 开始使用 所以 a = 4

如果说把i++看做是常数 ++i为变量i的话 能帮助我们更好的理解


比如 func(++i,i++,++i,i++.++i)第一步 为3 第二步 3.第三步 5 第四步 5 第五步7 这时候把++i看做变量 那么 func(i,5,i,3,i)实际上呢就是(7,5,7,3,7)

有兴趣的话 可以自己写一个函数 用gcc编译 看下结果是否正确。

0 0