找回密码
 注册
搜索
查看: 1148|回复: 9

[讨论] 问一个关于 i++ 和++i的问题

[复制链接]
发表于 2010-12-17 17:46:04 | 显示全部楼层 |阅读模式
怎么把原贴删掉了?回头重新贴上
[此贴子已经被作者于2010-12-17 19:06:44编辑过]
发表于 2010-12-22 13:28:36 | 显示全部楼层
没错,不同编译器结果不太一样
点评回复

使用道具 举报

发表于 2010-12-20 10:57:59 | 显示全部楼层
楼主 C语言没过关!
点评回复

使用道具 举报

发表于 2010-12-20 09:26:55 | 显示全部楼层
不同的编译器是有不同的结果
点评回复

使用道具 举报

发表于 2010-12-20 01:58:33 | 显示全部楼层
这种跟编译器有关的问题还要问。。
尽量避免编码时出现这样的代码就是了
点评回复

使用道具 举报

发表于 2010-12-18 13:59:00 | 显示全部楼层
是跟编译器有关的
点评回复

使用道具 举报

 楼主| 发表于 2010-12-17 19:13:17 | 显示全部楼层
这个和编译器也有关,在vc上编译执行是另外的结果
点评回复

使用道具 举报

发表于 2010-12-17 18:05:37 | 显示全部楼层
++i先执行++,i++后执行++
函数参数执行从右往左。

printf("%d,%d,%d,%d,%d ",i++,i--,++i,--i,i);先将能执行的执行之后,一个++和一个--抵消了,等价于
printf("%d,%d,%d,%d,%d ",i++,i--,i,i,i);
然后参数从右往左传入,传完之后执行 后++这种类型。
printf("%d,%d,%d,%d,%d ",i++,i--,i,i,5);  *** i = 5
printf("%d,%d,%d,%d,%d ",i++,i--,5,5,5); ***i = 5
printf("%d,%d,%d,%d,%d ",i++,5--,5,5,5); ***i = 4
printf("%d,%d,%d,%d,%d ",4++,5,5,5,5);***最后 i = 5
点评回复

使用道具 举报

 楼主| 发表于 2010-12-17 17:49:19 | 显示全部楼层
延伸出来,
#include <stdio.h>
void main(void)
{
        int i=5;
        //printf("%d,%d,%d,%d,%d ",++i,++i,++i,++i,++i);
        printf("%d,%d,%d,%d,%d ",i++,i--,++i,--i,i);
}

我试验的结果是
4,5,5,5,5
这个我就更不明白了
点评回复

使用道具 举报

发表于 2010-12-29 18:04:39 | 显示全部楼层
楼主的意思可能是不同的编译出不同的结果,表示疑惑吧
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-28 22:38 , Processed in 0.045940 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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