| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 804 人关注过本帖
标题:宣告int放字符的問題
只看楼主 加入收藏
sayya9999
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-11-5
结帖率:100%
收藏
 问题点数:0 回复次数:9 
宣告int放字符的問題
如下,
#include <stdio.h>
#include <stdlib.h>

main()
{
    int a;

    scanf("%c", &a);
    printf("%c\n", a);
    printf("%d\n", a);
}

當我輸入完A字元,並且按Enter後
不是應該顯示?
A
A
65

為何在65的地方是亂數阿?實在不解
搜索更多相关主题的帖子: int 字符 宣告 
2008-11-20 21:22
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
你的代码我这里可以执行通过,输入A也是返回
A
65
你可能要重新安装一下你的运行环境了吧?

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-20 21:25
sayya9999
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-11-5
收藏
得分:0 
小弟使用的是vc6的編譯器,卻發現不能。
但是若是使用dev-c++就可以,真是奇怪。
2008-11-20 21:48
woshiyun
Rank: 1
等 级:新手上路
威 望:2
帖 子:348
专家分:0
注 册:2008-6-16
收藏
得分:0 
字长问题。
试试

#include <stdio.h>
#include <stdlib.h>

main()
{
    int a=0;

    scanf("%c", &a);
    printf("%c\n", a);
    printf("%d\n", a);
}
2008-11-20 21:53
alweeq86
Rank: 2
等 级:论坛游民
帖 子:67
专家分:20
注 册:2008-9-14
收藏
得分:0 
对,是int默认字长的问题!!
2008-11-20 22:04
sayya9999
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-11-5
收藏
得分:0 
不知道樓上幾位大哥可否詳細說一下,據我理解,int是4bytes,char是1byte
2008-11-20 22:06
alweeq86
Rank: 2
等 级:论坛游民
帖 子:67
专家分:20
注 册:2008-9-14
收藏
得分:0 
你用 char a;就OK了!!
2008-11-20 22:09
死亡精灵
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-10-7
收藏
得分:0 
这个应该也对的!
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a;

    scanf("%c", &a);
    printf("%c\n", a);
    printf("%d\n", 'a');
    system("pause");
    return 0;
}
2008-11-20 23:17
风居住的街道
Rank: 1
等 级:新手上路
帖 子:374
专家分:0
注 册:2008-10-24
收藏
得分:0 
乱码的原因是这样的,int字长四个字节,但是scanf("%c",得到的是变量a的地址,而且它认为这个地址是指向一个char的,于是它就只填充了一个char而已,后面三个字节是什么它根本就不管了。于是如果后面的三个字节非零的话,显示的当然不是65啦。

解决方法有两个。一个是先给int赋初值,这个楼上已经给出代码了。第二个是完全把int当作char使用。如下:
#include <stdio.h>

int main(void)
{
    int a;
    scanf("%c", &a);
    printf("%c\n", a); // 此处因为%c只关心a的前一个字节的内容,所以无关紧要
    printf("%d\n", (char)a); // 将a强制转换为char,忽略掉后三个字节
    printf("%d\n", a & 0xFF); // 显式地忽略掉a的后三个字节
    return 0;
}
2008-11-21 00:04
sayya9999
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-11-5
收藏
得分:0 
感謝各位朋友,以及跟我解釋原因的朋友,我明白了
2008-11-21 08:08
快速回复:宣告int放字符的問題
数据加载中...
 
   



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

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