| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1358 人关注过本帖
标题:初学C,if语句有个疑问请教大虾
只看楼主 加入收藏
qjunshen
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2010-5-11
结帖率:75%
收藏
 问题点数:0 回复次数:14 
初学C,if语句有个疑问请教大虾
下面的这段程序运行时出现一个问题
main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    if ((a<30&&b>5000)||(a>30&&b>30000))
    {
        printf("1111");
    }
    else
    {
        printf("2222");
    }
    getch();
}
当我输入40
        40000
时应该是符合if条件的,也就是说应该输出的是1111
但是我在编译执行后输出的是2222
困惑,请指点下,谢谢
搜索更多相关主题的帖子: 语句 疑问 初学 
2010-05-11 16:17
falling3000
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-5-11
收藏
得分:0 
弱弱的来一句,是不是“(a<30&&b>5000)||(a>30&&b>30000)”被默认为假了。
2010-05-11 16:34
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:0 
在这里你的sizeof(int) 应该是等于2吧,b是一个有符数,40000的十六进制是0x9c40,可以看出它的最高位是1,所以程序会把它看成是一个负数,所以b>30000不成立,即得到了 2222 的结果。。。
2010-05-11 16:37
灰色代言
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-11 16:47
灰色代言
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-11 16:49
yc2575757
Rank: 7Rank: 7Rank: 7
来 自:北京
等 级:黑侠
威 望:1
帖 子:113
专家分:522
注 册:2010-5-7
收藏
得分:0 
vc6.0测试下是1111
2010-05-11 16:51
honey536
Rank: 2
来 自:山东
等 级:论坛游民
帖 子:68
专家分:76
注 册:2010-4-20
收藏
得分:0 
程序没有错,我运行了一下 ,输出的是1111   。可能是编译环境的问题     用VC6.0试试       群108668542里有共享的VC6.0软件
2010-05-11 17:29
mythzyx
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-3-20
收藏
得分:0 
int类型的变量范围是-32768-32767~32768
应该定义为 long
2010-05-11 17:34
dxb0357
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-11 17:39
GL_TANG
Rank: 2
来 自:内蒙古呼市
等 级:论坛游民
帖 子:9
专家分:20
注 册:2010-3-31
收藏
得分:0 
你的后面一个3000是不是错打成30000了?如果是30000那肯定不可能输入40和4000而输出1111的,因为怎么样也不会符合,但是我把你的程序的30000改成3000后就输出正确答案了,这是问题的根本,别忘了给我加分啊!大家都是新手互相照顾嘛,呵呵!

机会只给有准备的人!!!
2010-05-11 17:49
快速回复:初学C,if语句有个疑问请教大虾
数据加载中...
 
   



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

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