| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1785 人关注过本帖
标题:为什么是这样的结果呢?求教
取消只看楼主 加入收藏
anchor014412
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-3-9
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:7 
为什么是这样的结果呢?求教
#include <stdio.h>

int main(void)
{
    int i;
    scanf("%d",&i);
    printf("i = %c",i);

    return 0;
}
这个键盘敲1的话输出一个笑脸;这个我理解;

#include <stdio.h>

int main(void)
{
    int i;
    scanf("%c",&i);
    printf("i = %d",i);

    return 0;
}
这个敲1的话,为什么输出一个绝对值很大的负值?为什么不是ASCII字符1的十进制值46呢?
搜索更多相关主题的帖子: include return 绝对值 十进制 键盘 
2016-03-09 09:35
anchor014412
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-3-9
收藏
得分:0 
FFFFFFFFCCCCCC31
是这个吗?这个有什么含义吗?不明白,请指点一下啊
2016-03-09 10:15
anchor014412
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-3-9
收藏
得分:0 
是指最后的31是字符1的十六进制ASCII码吗?
2016-03-09 10:19
anchor014412
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-3-9
收藏
得分:0 
那就是说前面的3个字节是垃圾数据?好像我的ASCII码表有误,字符1的十六进制为31但是十进制为46,应该是49吧?大神
2016-03-09 10:25
anchor014412
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-3-9
收藏
得分:0 
怎么还能不一样的,我都打算结贴了。。。
2016-03-09 10:36
anchor014412
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-3-9
收藏
得分:0 
按我的编辑器来说应该是只存入了1个字节的数据,输出时按int类型输出,前3个字节无效,只有最末一个字节是字符1的ASCII值,是这样吧
2016-03-09 10:42
anchor014412
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-3-9
收藏
得分:0 
也不是随机值吧?每次结果都是那个大的负数,而且咱两的数都一样
2016-03-09 10:45
anchor014412
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-3-9
收藏
得分:0 
我们在刚学C编程的时候经常碰到“烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫”,这是为什么呢?
先从上次某公司笔试说起,当时有一题是考到了关于变量初始化的问题。在主函数外面(全局)和里面(局部)个定义一个int类型数值。然后没有赋值,直接打印出来,问输出什么。那会只知道全局默认是0,局部是一个负的挺大的数,还以为是最小整数。回来后试了下,局部的int默认的是-858993460,即0xcccccccc。
    但是为什么局部的默认是0xcccccccc而不是其他的?
查了一些资料,发现VC的DEBUG版会把未初始化的指针自动初始化为0xCCCCCCCC,而不是就让它随机去,那是因为DEBUG版的目的是为了能让程序员更早的发现错误,把堆栈上的数据对初始化成了0xcc,也就是说局部变量如果不初始化,那么DEBUG版本中就会是0xCC,如果野指针的初值不确定。而汉字“烫”的编码恰好就是1100110011001100,这也就为什么初学的时候会出现“烫”了,因为那会经常会忘记赋值或者数组越界了。而全局变量链接时已分配空间,程序运行时,操作系统的加载器,负责把链接器分配给全局变量的虚拟内存空间,映射到一个初始化为零的页面,所以被初始化为零。全局和静态的默认初始化都是靠加载机制实现的。另外:未初始化的符号在目标文件的bss段中,而初始化的符号在data段中。
局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于(堆)中。

网上查了下,是填充了一个固定值吗?是这个意思吗?
2016-03-09 10:58
快速回复:为什么是这样的结果呢?求教
数据加载中...
 
   



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

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