int i=10,j=20,k;k=i-- + ++j+i--;k为什么等于41?
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/12 07:04:03
int i=10,j=20,k;k=i-- + ++j+i--;k为什么等于41?
因为自加自减的优先级高于普通加减,k=i--+++j+i--可以写成k=(i--)+(++j)+(i--)
因为前++和后++的区别在于前++是先加一,再将加一后的结果参与到所在表达式的运算,而后++是先将当前值参与到所在表达式的运算中,执行后再将变量加一,基于这个原理
k=(i--)+(++j)+(i--)
= 10 + 21 +10
=41
最后i=8,j=21,不知道我说的你是否明白?
再问: 我知道这个原理,只是第二个i--的值不应该是9吗?怎么还是10?第一个i--之后i的值不是就变成9了吗?
再答: 这是因为很多编译系统规定在遇到一条计算表达式中同时出现若干i++、i--的情况时,在当前语句中并不执行i的自增和自减,i的初值是多少,i++和i--的值就是多少,当这条表达式执行完成之后,再将i连续自加或自减若干次。
因为前++和后++的区别在于前++是先加一,再将加一后的结果参与到所在表达式的运算,而后++是先将当前值参与到所在表达式的运算中,执行后再将变量加一,基于这个原理
k=(i--)+(++j)+(i--)
= 10 + 21 +10
=41
最后i=8,j=21,不知道我说的你是否明白?
再问: 我知道这个原理,只是第二个i--的值不应该是9吗?怎么还是10?第一个i--之后i的值不是就变成9了吗?
再答: 这是因为很多编译系统规定在遇到一条计算表达式中同时出现若干i++、i--的情况时,在当前语句中并不执行i的自增和自减,i的初值是多少,i++和i--的值就是多少,当这条表达式执行完成之后,再将i连续自加或自减若干次。
int i=10,j=20,k;k=i-- + ++j+i--;k为什么等于41?
int i=2,j=1,k=3 i&&(i+j)&k|i+j
int i,j,k;for(i=0;i
c语言中,int i=3,j=4 k=++i+j--+++i---j,结果为几?为什么?
{ int i,j,k; for(i=4;i>0;i--) { j=5; k=i+j; if((k%4=1)||(k%4
int i=1 ,j=1 ,k=2; if((j-- || k++) && i++) 为什么答案为2 0 2
#include ; main( ) {int i,j,k,s; i=0,j=10,k=2,s=0; for(; ;)
水仙花数C语言程序#includevoid main(){ int i,j,k,n; n=i*100+j*10+k; f
为什么等于81#include main(){int s=0,i,j,k; for(i=1;i
int i=5,j=5,k=4; k*=i+j; 计算k的值?原因?
void fun(int *a,int n) { int i,j,k,t; for(i=0;i
int i=9,j=19,k;