早教吧作业答案频道 -->其他-->
关于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); 不太懂,请老师们帮助理解下,透彻些!谢谢
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。不知道这样说你明白了么。
看了 关于i++++i的问题int...的网友还看了以下:
有下列程序段落:inti,a[5];for(i=0;i<5;i++)scanf(“%d”,&a[i] 2020-05-26 …
自增、自减运算符碰到具体例子还是不太明白。i++:i参与运算后,i的值再自增1,这里的“参与运算” 2020-07-15 …
在VC中,为什么i=3输出y=++i值为4;而i=3,y=(++i)+(++i)值为10?在y=( 2020-07-26 …
关于复数的(1)试求i,i^2,i^3,i^4,i^5,i^6,i^7,i^8的值;(2)由(1) 2020-07-26 …
复数这一章:第一题求满足下列条件的实数a,b的值(1)(a-3b)+(2a+3b)i=5+i(2)( 2020-10-30 …
执行下面的程序段后,X的值为多少?X=5ForI=1to20Stop2X=X+INextI循环第1次 2020-10-30 …
求复数z=(3+i)^5(1-i)^2/(1-2i)^61.求复数z=[(3+i)^5(1-i)^2 2020-11-01 …
如果奇函数y=f(x)在区间[3,7]上是增函数,且最小值为5,那么f(x)在区间[-7,-3]上是 2020-12-08 …
为什么T要赋予它1的值,I要赋予它2的值,计数变量到底是什么?(关于此例题)为什么每循环一次I增加1 2020-12-31 …
如图是求(共6个2)的值的程序框图,图中的判断框中应填()A.i≤5?B.i<5?C.i≥5?D.i 2021-01-15 …