鱼C论坛

 找回密码
 立即注册
查看: 1830|回复: 7

请告诉我程序中i和j的变化情况,请说得详细些,谢谢啦!

[复制链接]
发表于 2015-2-2 14:37:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 山里野人 于 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


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-2 15:50:29 | 显示全部楼层
因为你的值没有被保存 所以都是在5的基础上加1 5+1+1+1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-2 15:54:50 | 显示全部楼层
不太明白,能再详细些吗?:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-2 16:51:36 | 显示全部楼层
这个语句其实是不允许的所以 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:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-2 17:22:49 | 显示全部楼层
a983383557 发表于 2015-2-2 16:51
这个语句其实是不允许的所以 pq的值可能和预想的不太一样 , 至于i和j为啥是8因为 j=5; j++,j++,j++等同 ...

i和j的值可推算出来最后是8,P和q推算出的值却和电脑算的不一样,一直找不出原因。:dizzy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-2 17:25:39 | 显示全部楼层
这玩意是编译器的事你用别的编译器可能值和这个还不一样:big
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-2 21:46:53 | 显示全部楼层
a983383557 发表于 2015-2-2 17:25
这玩意是编译器的事你用别的编译器可能值和这个还不一样

谢谢了。:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-2 21:58:08 | 显示全部楼层
此题无解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 16:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表