社区
C语言
帖子详情
请教一个有关i++的问题
lywei123
2004-01-02 11:55:56
int i;
i=3;
m=(i++)+(i++)+(i++);
printf("%d",m);
结果输出:9
int i;
i=3;
m=((i++)+(i++)+(i++));
printf("%d",m);
结果输出:9
int i;
i=3
printf("%d",(i++)+(i++)+(i++));
结果输出:12
为什么呢?不明白呀
...全文
47
22
打赏
收藏
请教一个有关i++的问题
int i; i=3; m=(i++)+(i++)+(i++); printf("%d",m); 结果输出:9 int i; i=3; m=((i++)+(i++)+(i++)); printf("%d",m); 结果输出:9 int i; i=3 printf("%d",(i++)+(i++)+(i++)); 结果输出:12 为什么呢?不明白呀
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lazygod
2004-01-03
打赏
举报
回复
TMD,考试出这种题真没劲。
++在先,先加自己,后取表达式的值。
++在后,后加自己,先取表达式的值。
101monster
2004-01-03
打赏
举报
回复
呵呵,环境、编译器的问题,这种代码本来就属于有争议的,不推荐使用。
neptunez
2004-01-03
打赏
举报
回复
可悲的是很多考试都以此类题拿出来考
hongfeeling
2004-01-03
打赏
举报
回复
研究一下会有一些收获,
不过太用心于此,就不妙了。
这种代码,在绝大多数情况下的出现,都可以避免的。
foxmail
2004-01-03
打赏
举报
回复
k=i,i=i+1
其中i=i+1要在那行语句执行完以后才执行
而++i等价于k=(i=i+1)
foxmail
2004-01-03
打赏
举报
回复
是不是谭浩强书上的题目啊?
反正就是他们那帮老学究想出来的
别做这种题目了
反正记住
i++是k=i,i=i+1 就行了
int i;
i=3
printf("%d",(i++)+(i++)+(i++));
VC6里面输出是9
至于输出结果,不同的编译器都有可能不能,具体的看汇编代码吧
zhangfjj
2004-01-03
打赏
举报
回复
对于这种自增运算符的处理确实与编译器有关呀,其实你可以翻翻谭浩强的书,他书上专门讨论了这个问题,我想这个东西主要用来讨论自增运算符的副作用,一个好的可读性强的代码,最好不要在一个语句中出现对一个变量多次自增或自减运算
zhangfjj
2004-01-03
打赏
举报
回复
对于这种自增运算符的处理确实与编译器有关呀,其实你可以翻翻谭浩强的书,他书上专门讨论了这个问题,我想这个东西主要用来讨论自增运算符的副作用,一个好的可读性强的代码,最好不要在一个语句中出现对一个变量多次自增或自减运算
shuishuangyu
2004-01-03
打赏
举报
回复
麻烦
19830711
2004-01-03
打赏
举报
回复
up
809982
2004-01-03
打赏
举报
回复
呵呵,好久没见到此类问题了,尽量使用同一家编译器提供商提供的开发工具。
comefirst
2004-01-03
打赏
举报
回复
我在tc,bcb下调试下面这段代码
int i;
i=3 ;
printf("(i++)=%d\n",(i++));
i=3;
printf("(i++)+(i++)=%d\n",(i++)+(i++));
i=3;
printf("(i++)+(i++)+(i++)=%d\n",(i++)+(i++)+(i++));
i=3;
printf("(i++)+(i++)+(i++)+(i++)=%d\n",(i++)+(i++)+(i++)+(i++));
getchar();
输出结果:
(i++)=3
(i++)+(i++)=7
(i++)+(i++)+(i++)=12
(i++)+(i++)+(i++)+(i++)=18
估计是在前一项i++加上后一项i++的时候,前一项又+1了
就像这样
3=3
4+3=7
5+4+3=12;
6+5+4+3=18;
vc下面我没有调试过,不知道结果。
TodaySunday
2004-01-03
打赏
举报
回复
环境、编译器的问题
wonderlandsh
2004-01-03
打赏
举报
回复
是啊
lywei123
2004-01-03
打赏
举报
回复
这样的问题我也是第一次见到,那天我一个非计算机专业的朋友问我,说他们考试有这么一道题,我想了一下午也没明白。这样的东西,也恐怕只有在考试中才会出现吧
xinhuowei
2004-01-03
打赏
举报
回复
这个问题我也经常遇到,尤其是在考试中,总是搞混,这下可是搞明白了。
heuristic
2004-01-03
打赏
举报
回复
实际中很少有人把++i i++ 写得太复杂的
估计也只有老谭之流爱弄这噱头
知道一次变换结果就行了,在编程的时候尽量不要在一个表达式里++,--个没完
sharkhuang
2004-01-03
打赏
举报
回复
理解一次!以后就靠细心了!其实没有多大意思!
只要知道在c++
++1 效率 比i++ 高就是了
qingdong
2004-01-03
打赏
举报
回复
在这个坛子里有很多这样的贴子,看看以前的。、
编译器不同,得到的结果也不同。
只要知道i++与++i的区别就可以了
whmily
2004-01-03
打赏
举报
回复
妈的
这种问题太无聊了
它与编译器有关
在语句:
i++; (解释为,i;i=i+1;
即:先用i的原始值,在该条语句结束后再将i的值加1)
++i; 与上正相反
而你的题目:与编译器的执行顺序有关;
建议楼主对此类问题不要深究。并没有太大意思。
将精力放到编程中,比这个有意义的多
加载更多回复(2)
++
i和i
++
2008-03-27 21:59 ...想
请教
大家
一个
问题
今天看C教程时看到个题目讲解 算表达式的值 i
++
*
++
i + i-- * --i结果是18 说明是CPU对表达式优化后 i
++
*
++
i 和 i-- * --i这两个可以同时处理 然后先同时处理+
php$i=10 求2 $i 2,
请教
:为什么 for($i=1;$i<=10;print $i
++
); 中的print不能换成echo呢?...
请教
:为什么 for($i=1;$i<=10;print $i
++
); 中的print不能换成echo呢?回复讨论(解决方案)for($i=1;$i<=10;echo $i
++
);Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting ')' in .....就是...
请教
一个
问题
void main() ...{int i,j,m,n;m=0;for(i=101;i<=200;i
++
){n=sqrt(i+1);for(j=2;j<=n;j
++
)if(i%j==0)break;//elseif(i%j!=0)printf("%5d",i);m
++
; } printf("the total prime number are %d",m)...
一道有意思的面试题:i
++
* 计算i
++
*/ public void countDemo(){ int num = 0; for(int i = 0 ; i < 10 ; i
++
){ num = num
++
; } System.out.print(num + "\n");//输出0 } 今天偶然遇到了这么一道面试题,最后打出来的结果是...
Coding_Algorithms(剑指Offer系列)
写在前面:2016.12.07开始刷题模式,掌握基础算法的同时学习巩固C
++
和Python编程基础,每道算法题我会尽量用两种语言去...ppi and ipp (自己琢磨的
问题
,还没搞明白,置顶)i
++
和
++
i的
问题
: i
++
和
++
i的
问题
,解释下
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章