| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 790 人关注过本帖
标题:为什么结果不是15
只看楼主 加入收藏
Small包子
Rank: 1
等 级:新手上路
帖 子:23
专家分:3
注 册:2013-3-20
结帖率:0
收藏
 问题点数:0 回复次数:10 
为什么结果不是15
#include<stdio.h>
void main()
{
int a=0,b=1,c=0,d=20;
if(a) d=d-10;
else if(!b)
if(!c) d=15;
else d=25;
printf("d=%d\n",d);
}
2013-06-01 13:44
bccn新
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:57
专家分:144
注 册:2013-5-10
收藏
得分:0 
这个程序只做了一句赋值:d=25;最后结果当然不是15了.
2013-06-01 14:05
Han_FlyB
Rank: 6Rank: 6
等 级:侠之大者
帖 子:143
专家分:424
注 册:2013-3-25
收藏
得分:0 
因为else if (!b)没有符合条件,所以没有执行if (!c) d=15了,直接到最后一个else了
2013-06-01 14:08
Small包子
Rank: 1
等 级:新手上路
帖 子:23
专家分:3
注 册:2013-3-20
收藏
得分:0 
回复 3楼 Han_FlyB
可答案是20
2013-06-01 14:17
秦殇
Rank: 2
等 级:论坛游民
帖 子:61
专家分:77
注 册:2013-3-13
收藏
得分:0 
把b的值改成0就行。
不然,你到!b的时候,直接结束了。
2013-06-01 15:20
qiankai
Rank: 2
等 级:论坛游民
帖 子:35
专家分:49
注 册:2012-4-22
收藏
得分:0 
你的if(!c)包含在了else if(!b)语句中了,也就是说当if(!b)判断语句不为true 就不会执行if(!c)的判断,d的值也就不会发生改变,依旧是20了。
2013-06-01 15:29
扯淡的90
Rank: 1
等 级:新手上路
帖 子:7
专家分:7
注 册:2013-4-12
收藏
得分:0 
回复 6楼 qiankai
对,正解!
2013-06-01 18:18
蓝天时代
Rank: 2
等 级:论坛游民
帖 子:30
专家分:47
注 册:2013-4-25
收藏
得分:0 
中间的程序都不执行。所以输出的是初始值d=20;
2013-06-01 20:15
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
收藏
得分:0 
如果没有大括弧else 只能和最近的一个if配对,那么你的整个程序的逻辑就是这样的
if(a)               //a=0,执行else下语句2
    d=d-10;         //语句1
else
    if(!b)            //语句2,判断!b=0,那么跳过整个if else语句直接执行最后的打印
        if(!c)
            d=15;
        else
            d=25;
//所以最后的结果是d=20,并没有执行任何赋值语句

[ 本帖最后由 lzj12530 于 2013-6-1 20:39 编辑 ]

C++菜鸟
2013-06-01 20:34
谢跃锋
Rank: 2
等 级:论坛游民
威 望:2
帖 子:50
专家分:77
注 册:2013-4-14
收藏
得分:0 
if总是与最近的ELSE搭配的!第一个if 判断不成立。第二个else if也不成立,不执行第三个if;
而if与最近的else 搭配,所以else 也不执行,所以printf打印出d的初始值,即d=20.
2013-06-02 09:26
快速回复:为什么结果不是15
数据加载中...
 
   



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

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