请告诉我程序中i和j的变化情况,请说得详细些,谢谢啦!
本帖最后由 山里野人 于 2015-2-2 16:31 编辑#include<stdio.h>
void main()
{
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d\n",p,q,i,j);
}
我的思路是:
p的运算:因为()是优先运算的,所以从右往左,第一个(i++)=(5),i值变为6;然后第二个(i++)=(6),i值变为7;第三个(i++)=(7),i值变为8;。所以p=7+6+5=18,电脑怎样计算出15???。(第一个问题)
q的运算:因为()是优先运算的,所以从右往左,第一个(++j)=(6),j值变为6;然后第二个(++j)=(7),j值变为7;第三个(++j)=(8),j值变为8;。所以q=8+7+6=21,电脑怎样计算出22???。(第二个问题)
电脑输出为:15,22,8,8
我使用的软件为
Visual C++6.0
因为你的值没有被保存 所以都是在5的基础上加1 5+1+1+1 不太明白,能再详细些吗?:lol:
这个语句其实是不允许的所以 pq的值可能和预想的不太一样 , 至于i和j为啥是8因为 j=5; j++,j++,j++等同于5+1+1+1, i=5; ++i,++i,++i 也等同于5+1+1+1 ,++i和i++的不同printf("%d\n",++i),printf("%d\n",i++)只有在这个时候能看出来一个是5一个是6 因为++i是先相加在输出,i++是先输出再相加。:lol: a983383557 发表于 2015-2-2 16:51
这个语句其实是不允许的所以 pq的值可能和预想的不太一样 , 至于i和j为啥是8因为 j=5; j++,j++,j++等同 ...
i和j的值可推算出来最后是8,P和q推算出的值却和电脑算的不一样,一直找不出原因。:dizzy: 这玩意是编译器的事你用别的编译器可能值和这个还不一样:big a983383557 发表于 2015-2-2 17:25
这玩意是编译器的事你用别的编译器可能值和这个还不一样
谢谢了。:lol: 此题无解
页:
[1]