鱼C论坛

 找回密码
 立即注册
查看: 2480|回复: 12

程序 问题

[复制链接]
发表于 2013-3-28 14:40:34 | 显示全部楼层 |阅读模式
1鱼币
#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);
}


为什么运行后q是22  不应该是21吗   ????

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-28 17:11:00 | 显示全部楼层
我的C++运行不了结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-28 17:52:46 | 显示全部楼层
q=(++j)+(++j)+(++j)
中分三步计算
1:j先自增1 j=7
2:先计算后两个(++j)+(++j)=14
将第一个(++j)与后两个相加前先要自增1 i=8
3:将(++j)+14=8+14=22
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-28 17:54:42 | 显示全部楼层
q=(++j)+(++j)+(++j)
中分三步计算
1:j先自增1 j=7
2:先计算后两个(++j)+(++j)=14
将第一个(++j)与后两个相加前先要自增1 j=8
3:将(++j)+14=8+14=22
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-28 20:42:22 | 显示全部楼层
小甲鱼视频有讲
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-28 20:52:11 | 显示全部楼层
楼上已经给出答案了,不过我还是建议不要在 i++ 和 ++i 纠结,不同的编译器所得的答案是不一样的。这也是C语言一个特点。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-28 22:25:28 | 显示全部楼层
没有哪个程序员会写这种代码的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-28 22:40:28 | 显示全部楼层
得到.exe文件后反汇编一下!就应该能弄明白的!试下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-29 16:11:47 | 显示全部楼层
你用的是vc6.0编译器吧,不同的编译器结果不同,你可以试试,其实是vc编译器对上面的程序进行了优化,q先自增2次得7   所以运算结果为7+7+8=22,我也搞不懂为什么?只能说是编译器的错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-18 10:41:39 | 显示全部楼层
不要自己给自己找麻烦啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-18 10:56:39 | 显示全部楼层
这个不叫编译器优化 晕 谁说的
编译器优化不会造成 不同编译器运行结果不同的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-30 23:10:26 | 显示全部楼层
这个问题小甲鱼视频里讲过,反汇编一下看看问题出在哪里。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-25 10:31:46 | 显示全部楼层
帮顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 07:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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