| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 530 人关注过本帖
标题:新手请教大大们一个问题,为什么这个有或无都是一个结果
只看楼主 加入收藏
灯笼
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-7-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
新手请教大大们一个问题,为什么这个有或无都是一个结果
请教大大们,这有两个代码,为什么结果是一样的。

第一个:这里没有定义
#include <stdio.h>

void main()
{
    int c, blank;
        
        /*这里为空*/
    while ((c = getchar())!= EOF)
    {   
        if ( c != ' ')
            putchar(c);   
        if ( c == ' ')
            if (blank != ' ')
                putchar(c);
        blank = c;
    }

}

第二个:这里有定义
#include <stdio.h>

void main()
{
    int c, blank;
        
        blank = 'a';
    while ((c = getchar())!= EOF)
    {   
        if ( c != ' ')
            putchar(c);
        
        if ( c == ' ')
            if (blank != ' ')
                putchar(c);
        blank = c;
    }

}
搜索更多相关主题的帖子: blank include 
2013-07-07 19:43
雪狼MJ
Rank: 8Rank: 8
来 自:甘肃
等 级:蝙蝠侠
威 望:4
帖 子:267
专家分:853
注 册:2012-5-27
收藏
得分:20 

很简单,第一个是没有底blank进行初始化。

而你blank的用途就是if (blank != ' ')

第一个对blank没有进行初始化,会得到未预知的东西,也就是说这用blank的时候不知道它是社么东西,也许是空字符,也许是任何一个字符,这里通常情况下是空字符,if条件判断是false,不执行if里面的东西。但是无法预知blank的值,运行的时候也就会有隐患。

第二个是对blank进行了初始化赋值,blank=a;而这里if (blank != ' ')条件判断是false,也不执行if里面的东西。

虽然两种情况运行结果相同,但是未初始化就用blank就相当于不定时炸弹,你不知道什么时候会爆炸,这才是最致命的。

Edsger Dijkstra:算法+数据结构=程序
2013-07-07 20:27
灯笼
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-7-7
收藏
得分:0 
回复 2楼 雪狼MJ
非常感谢大大的指点。
2013-07-07 21:46
快速回复:新手请教大大们一个问题,为什么这个有或无都是一个结果
数据加载中...
 
   



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

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