早教吧 育儿知识 作业答案 考试题库 百科 知识分享

关于i++++i的问题inti=5,j=5,p,q;p=(i++)+(i++)+(i++);q=(++j)+(++j)+(++j);这个程序中,对P=(i++)+(i++)+(i++)应理解为三个i相加,故P值为15。然后i再自增1三次相当于加3故i的最后值为8。而对于q的值则不然,q

题目详情
关于i++ ++i的问题
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
这个程序中,对P=(i++)+(i++)+(i++)应理解为三个i相加,故P值为15。然后i再自增1三次相当于加3故i的最后值为8。而对于q 的值则不然,q=(++j)+(++j)+(++j)应理解为q先自增1,再参与运算,由于q自增1三次后值为8,三个8相加的和为24,j的最后值仍为8。
这两个表达式前者我懂,后者不能理解,请大大们帮我理解下,讲细致些谢谢!
P=(i++)+(i++)+(i++) 等于 p=i+i+i=5+5+5=15 i自增三次故i=5+3=8, 这个我似乎还能理解一点, 后者这个q=(++j)+(++j)+(++j); 不太懂,请老师们帮助理解下,透彻些!谢谢
▼优质解答
答案和解析
不管是几个++的表达式相加,你只要把它当作函数,i++相当于 int func1(){ int temp=i; i=i+1; return temp; } 而++i相当于 int func2(){ i=i+1; return i ;}也就是i++是返回自加之前的值,++i是返回自加之后的值。所以对于p=(i++)+(i++)+(i++),p=5+5+5=15,做完这个之后i开始自加,一共加了三次,i=8,但这个时候p的值已经算过了,所以p还是等于15;对于q=(++i)+(++i)+(++i),i首先自加,一共加了三次,此时i=8,然后在做p=i+i+i=8+8+8=24。不知道这样说你明白了么。