作业帮 > 综合 > 作业

int i=10,j=20,k;k=i-- + ++j+i--;k为什么等于41?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 04:02:04
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连续自加或自减若干次。