| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2005 人关注过本帖
标题:简单问题,高手莫进
只看楼主 加入收藏
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:23 
简单问题,高手莫进
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
moriyayu
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2011-11-17
收藏
得分:2 
我是刚学的
感觉是C 变成了  \0
....
不知道对不对
2011-11-17 21:41
将是高手
Rank: 1
等 级:新手上路
帖 子:79
专家分:5
注 册:2011-6-18
收藏
得分:2 
猜的

比如输入的是“a”,但是相应地址里却储存着“97”。

哈哈,不知道对不对。
2011-11-17 21:56
蛋蛋花
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2010-11-28
收藏
得分:2 
小弟在电脑试了一下,代码运行的时候,c根本就得不到输入的值。不知道怎么回事。希望高手出来解答
2011-11-17 21:57
moriyayu
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2011-11-17
收藏
得分:0 
回复 4楼 蛋蛋花
scanf是以\0和回车结束的
感觉是C已经把\0录取了~~~
2011-11-17 22:00
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
收藏
得分:2 
我猜的,试一试:

在C语言中int类型的变量存储的的时候占4个字节的位置(大多数机器),而char类型的变量只占1个字节的位置。但是二者在进行运算操作的时候是通用的,就是说可以把char类型变量看做比较短的int类型的变量,反过来也可以把int类型的变量视为比较长的char类型的变量。但是在这段程序中的代码试图把比较长的类型的int数据存储到比较短的char类型的变量中,会造成数据溢出?。。。。猜测的,不知道对不对

何必等待?梦在今朝
2011-11-17 22:30
馨梦惜夕
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:54
专家分:190
注 册:2011-5-18
收藏
得分:2 
讨论这个 没意思
2011-11-17 23:16
edward_eric
Rank: 2
等 级:论坛游民
帖 子:32
专家分:83
注 册:2011-10-5
收藏
得分:2 
输入字符属于非法输入,你的输入应该停留在缓冲区,然后一直循环。但是后面的循环不需要再输入了。没做实验,不知道对不。
2011-11-17 23:50
diyox
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2011-8-22
收藏
得分:2 
回复 楼主 cnfarer
char c;
只表示声明了c,并没有分配空间。当然你取c的地址 &c 也是随机的了,如果这个随机的值正赶上正在使用的内存或不允许访问的内存,必挂。但无论如何警告肯定是有的。上面写法是不允许的。
2011-11-17 23:53
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:2 
回复 9楼 diyox
c是局部变量,分配在栈上,c和i是挨着的,这种用法往c上写了int型数据,很可能会改写了i的值,i变得很大,提前结束循环

总有那身价贱的人给作业贴回复完整的代码
2011-11-18 00:35
快速回复:简单问题,高手莫进
数据加载中...
 
   



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

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