鱼C论坛

 找回密码
 立即注册
查看: 3205|回复: 5

新手,能帮忙写一下下面的详细步骤,求详解?

[复制链接]
发表于 2012-3-29 21:01:22 | 显示全部楼层 |阅读模式
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",p,q,i,j);
}

最佳答案

查看完整内容

如果楼主额非要去深究的话,可以去网上看下这个 的反汇编。但是这种用法真的很不提倡。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-29 21:01:23 | 显示全部楼层
本帖最后由 湮汐 于 2012-3-29 21:12 编辑

在同一个句子里面不要使用这么多的自增和自减,前缀自增就是先+1后执行,后缀自增就是先执行后+1,至于判定的地方,一般是在一个表达式后面的逗号或者是分号后面执行后缀自增。但是有的地方说不清楚,不同的系统和不同的编译器都不好说。
至于本题目里面,q的值其实很不确定,我的系统用vc++6.0算出来的是22,但是有的可能是21,甚至24。在同一个语句里面预算一个变量两次自增以上就不好确定值了,因为你不知道系统是从左到右运算还是从右向左运算。
楼主尽量不要用这种方法。

如果楼主额非要去深究的话,可以去网上看下这个 的反汇编。但是这种用法真的很不提倡。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-3-29 21:43:07 | 显示全部楼层
这种运算是跟特定编译器有关的..不具一般性..所以深究这些东西没有意义...这种风格是很不好的..会造成未定义行为..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-3-29 22:38:10 | 显示全部楼层
楼上正解,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-3-30 20:14:40 | 显示全部楼层
这中东西一般是二级题之类的吧。
所以说,二级是害人的东西,没什么用。别的专业人学来搞搞证可以,想以后搞编程的人去考二级就无聊了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-4-1 10:33:14 | 显示全部楼层
     i和q的值是不会变的,至于那个p和q的值,结果根本就算不出来,因为你那是无限加,也就是没有结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 01:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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