| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1834 人关注过本帖
标题:为什么是这样的结果呢?求教
只看楼主 加入收藏
anchor014412
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-3-9
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:16 
为什么是这样的结果呢?求教
#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
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:10 
你把结果-858993615转换成十六进制数,再想想应该能明白。
2016-03-09 10:01
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
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
0x31不就是ascii的1么。%c指向的只是char型的地址,把这个地址赋给int型,那么指向的范围就变大了。
2016-03-09 10:21
anchor014412
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-3-9
收藏
得分:0 
那就是说前面的3个字节是垃圾数据?好像我的ASCII码表有误,字符1的十六进制为31但是十进制为46,应该是49吧?大神
2016-03-09 10:25
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:10 
会吗?向int 1的内存中写入'1'的ASCII值,我觉得输出是49,1的ASCII十进制值。
图片附件: 游客没有浏览图片的权限,请 登录注册

   唯实惟新 至诚致志
2016-03-09 10:30
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
回复 7楼 qq1023569223
不可能啊,你的编译器将某些地址的值清零了?
2016-03-09 10:33
anchor014412
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-3-9
收藏
得分:0 
怎么还能不一样的,我都打算结贴了。。。
2016-03-09 10:36
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
回复 8楼 grmmylbs
我的都是默认的设置。不过你说说你的理解,我也不明白。int4占4个字节,char占1个字节,赋值后前面三个字节的数据会确定吗,应该每次输出可能都不一样吧?

[此贴子已经被作者于2016-3-9 10:43编辑过]


   唯实惟新 至诚致志
2016-03-09 10:38
快速回复:为什么是这样的结果呢?求教
数据加载中...
 
   



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

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