| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 697 人关注过本帖, 1 人收藏
标题:求i++的运行思路
只看楼主 加入收藏
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
结帖率:90.48%
收藏(1)
已结贴  问题点数:10 回复次数:4 
求i++的运行思路
题目是我拷过来的:
2.
#include<stdio.h>
main()
{
   int i=1,z;
   z=i--||i++;
   printf("%d  %d",z,i);
}

在tc2.0的运行下结果是不是 z=1  , i=0 。
我想知道为什么i=0,
首先我说下我的思路 z=i输出1再自减为0||i输出0再自加为1, 结果z=1||0.  z=1
然后输出i的值,这里i的值是根据i++输出来的值0来确定?还是根据i输出0以后自加为1的值来确定?
希望理解会了的人给我详细点的解释。
搜索更多相关主题的帖子: 运行 思路 
2009-11-24 22:51
NV77
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-11-9
收藏
得分:0 
我的理解是
i=1  z=i--
是先把i的值给z,z=1,然后i自减1,i=0
要是z=--i,
则先对i执行自减,i=0
然后再将i的值给z,z=0
2009-11-24 23:36
hyfl
Rank: 7Rank: 7Rank: 7
来 自:火星
等 级:黑侠
帖 子:113
专家分:552
注 册:2008-11-20
收藏
得分:6 
z = i--||i++;
这句应该注意运算符的优先级,--和++肯定最高的,||次之,=最末
首先执行i--,返回值是1,那么i++就不会执行了,因为对于||(或)运算,一个条件为1,无论另一个怎样结果都是1,所以编译器进行优化了,不执行i++,所以i=0。然后返回||运算的值,即1,赋给z,所以z=1。
有纰漏的地方,请指正。


[ 本帖最后由 hyfl 于 2009-11-25 00:35 编辑 ]

“一切高手都是从菜鸟炼成的!”1099285180@
2009-11-25 00:33
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:4 
楼上正解··这样的复合运算就是要看运算符的优先级·z 的值是逻辑表达式的结果,即 i-- || i++ 是真还是假。。。。
对于逻辑或运算(||),我再说下,因为逻辑或运算是若干的条件中有一个满足的话返回值就是真(即1), 如A || B || C (A、B、C为表达式)
判断的时候肯定是从左到右进行判断,即一开始先执行A的语句,如果A是真,则停止运算(B、C是不会执行了,因为不管B、C执行后的结果是为什么,返回值就已经是1了,计算机自己不会做那么多余的事)。。如果A为假则跳到下一个进行判断··如果这时B为真,C同理也不会被执行。。。。
2009-11-25 09:14
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
收藏
得分:0 
3  4 楼的解释很好.明白了。关键还是在逻辑判断那里。
2009-11-25 10:50
快速回复:求i++的运行思路
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018991 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved