作业帮 > 综合 > 作业

int i=0,j=3; while(i2) { printf("%d,%d\n",i,j); j=3-i++; } 输

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/30 12:57:34
int i=0,j=3; while(i2) { printf("%d,%d\n",i,j); j=3-i++; } 输出的结果是0,3 1,
如果是的话,那么 j=3-i++; 就等价于j=3-i;i++;吧?但是不是说单目运算符优先级别高于双目运算符吗,那不是应该先i++了吗?
int i=0,j=3; while(i2) { printf(
输出的结果是你写的.
单目运算符优先级别高于双目运算符
j=3-i++; 是先计算x=i++ 再计算j=3-x
但是这里面有个关键,就是
i++是一个表达式,它的值等于没有变化前的i
++i的值等于变化后的i
比如 i = 0 那么 (i++) = 0 (++i) = 1
所以:j=3-i++; 是先计算x=i++=0 但是i已经为1了 再计算j=3-x=3
这样就出来你所写的结果了.你是理解成了i++等于i变化后的值,所以有上面的疑惑