| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2005 人关注过本帖
标题:简单问题,高手莫进
取消只看楼主 加入收藏
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:1 
简单问题,高手莫进
C陷阱与缺陷中的一个小问题,供新手讨论.
#include <stdio.h>
int main()
{
    int i;
    char c;
    for (i=0;i<5;i++){
        scanf("%d",&c);//后果是什么?
        printf("\n%d   ",i);
    }
    return 0;
}
搜索更多相关主题的帖子: include 
2011-11-17 21:22
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
作者的原意是当出现这样的失误时,编译器是照常通过的,能执行,在某些情况下似乎\甚至能得到想要的结果(14楼小兄弟的结果可以为证).不过这就是个陷阱,程序中如果出现这样的失误,后果将可能不堪设想.按原意,应该是分5次输入5个字符(每次加回车),输出0--4的5个数字.这个scanf可能会导致的结果:只输入一个字符(回车),就能输出0 1 2 3 4(分行),也可能会进入死循环或得到类似14楼的结果.当然有些编译器可能比较聪明,会提出警告信息.


★★★★★为人民服务★★★★★
2011-11-18 21:59
快速回复:简单问题,高手莫进
数据加载中...
 
   



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

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