| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2185 人关注过本帖
标题:搞不懂,全是i++问题!
只看楼主 加入收藏
越月
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2009-11-22
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:24 
搞不懂,全是i++问题!
1.
#include<stdio.h>
main()
{
   int i=1,z;
   z=--i||i++;
   printf("%d  %d",z,i);
}


2.
#include<stdio.h>
main()
{
   int i=1,z;
   z=i--||i++;
   printf("%d  %d",z,i);
}

3.#include<stdio.h>
main()
{
   int i=1;
   printf("%d  %d",++i,i++);
}

4.(这道别人在论坛已经问过,但我还是不理解)
#include<stdio.h>
main()
{
   int i=5,j=5,p,q;
   p=(i++)+(i++)+(i++);
   q=(++j)+(++j)+(++j);
printf("%d  %d  %d  %d",p,i,q,j);
}


我编了一次,输出结果是
第一道:0  1
第二道:1  0
第三道:3  1
第四道:15  8  22  8
各位大虾能给我一个详尽的解释吗?谢谢!!!

(道个歉:二楼的,抱歉,我第一次时把第一题的“--i”抄错成“i--”了,现在改回来了,我用的环境是Cygwin,我编了一次,这次没错了。)

[ 本帖最后由 越月 于 2009-11-22 23:40 编辑 ]
搜索更多相关主题的帖子: include 
2009-11-22 22:34
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:0 
第一第二道的答案都是1 0;
第三道答案2 1;
第四道答案对了;
2009-11-22 22:50
越月
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2009-11-22
收藏
得分:0 
,道个歉:二楼的,抱歉,我第一次时把第一题的“--i”抄错成“i--”了,现在改回来了,我用的环境是Cygwin,我再编了一次,如上没错。
2009-11-22 23:49
无诲今生
Rank: 8Rank: 8
来 自:桂林理工大学
等 级:蝙蝠侠
威 望:2
帖 子:373
专家分:726
注 册:2009-5-11
收藏
得分:0 
1.
#include<stdio.h>
main()
{
   int i=1,z;
   z=--i||i++;
   printf("%d  %d",z,i);
}
因为初始i=1;所以--i==0,i++等于1,而0||1==0,所以z==0,所以输出0 1

顺境逆境切莫止境,得意失意切莫在意。
2009-11-23 09:51
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
收藏
得分:0 
回复 4楼 无诲今生
1.
#include<stdio.h>
main()
{
   int i=1,z;
   z=--i||i++;
   printf("%d  %d",z,i);
}
你在误导人家?或逻辑运算的结果 0||1 运行以后的结果是0 ?   你搞错了吧。应该是z=1  i自减一输出结果 i=0.
2009-11-23 09:57
无诲今生
Rank: 8Rank: 8
来 自:桂林理工大学
等 级:蝙蝠侠
威 望:2
帖 子:373
专家分:726
注 册:2009-5-11
收藏
得分:0 
2.
#include<stdio.h>
main()
{
   int i=1,z;
   z=i--||i++;
   printf("%d  %d",z,i);
}
在z=i--||i++;中,i--等于1,i++等于1,所以z==1;
在printf("%d  %d",z,i);中,i什么等于0,是因为前边已经有了i--,所以下次遇到i是时,会反回在上一次的基础上减一,看了C++对++运算符重载后就知道了
可以看下:
#include<stdio.h>
void main()
{
   int i=1,z,x;
   z=i--;
   x=i;
   printf("%d%d",z,x);
}
这个例子,结果和上边一样

顺境逆境切莫止境,得意失意切莫在意。
2009-11-23 10:06
无诲今生
Rank: 8Rank: 8
来 自:桂林理工大学
等 级:蝙蝠侠
威 望:2
帖 子:373
专家分:726
注 册:2009-5-11
收藏
得分:0 
回复 5楼 李若斌
不好意思,
应该是:因为初始i=1;所以--i==0,i++等于0,而0||0==0,所以z==0

顺境逆境切莫止境,得意失意切莫在意。
2009-11-23 10:10
无诲今生
Rank: 8Rank: 8
来 自:桂林理工大学
等 级:蝙蝠侠
威 望:2
帖 子:373
专家分:726
注 册:2009-5-11
收藏
得分:0 
哦对了,好像和编译器有关吧

顺境逆境切莫止境,得意失意切莫在意。
2009-11-23 10:16
李若斌
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:219
专家分:184
注 册:2009-9-30
收藏
得分:0 
回复 6楼 无诲今生
#include<stdio.h>
main()
{
   int i=1,z;
   z=i--||++i;
   printf("%d  %d",z,i);
}
我改了一下 看看我的想法是不是对的,i--先输出1再自减为0,然后++i自加1输出1,结果是z=1||1,z=1  i=1.对不对。
你说的前面z=i--||i++;  运算过程 是首先输出1再自减为0,然后输出0再自加。i的值不应该是1吗?那么最后不该是输出i=1吗?
2009-11-23 10:36
gold4rs
Rank: 1
等 级:禁止访问
帖 子:2
专家分:0
注 册:2009-11-23
收藏
得分:0 
看不懂哈...

http://www./Aion-Kinah-US.html
2009-11-23 11:06
快速回复:搞不懂,全是i++问题!
数据加载中...
 
   



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

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