标题:我是初学者,一道简单的选择题
只看楼主
jingchun
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-12-19
结帖率:0
已结贴  问题点数:20 回复次数:7 
我是初学者,一道简单的选择题
有程序段:int a=0x161; printf("%c",a);输出为   C   。
A)161     B)353   C)a     D)无法确定
这道题为什么选c啊?无法理解啊
搜索更多相关主题的帖子: 选择题 int printf 输出 
2017-12-19 15:29
jingchun
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-12-19
得分:0 
这个题好难啊┭┮﹏┭┮
2017-12-19 15:54
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
如果无确定系统平台,这个与大小端模式有关。
int a=0x161; 内存布局(地址:低-->高)
大端模式:00 00 01 61
小端模式:61 01 00 00
2017-12-19 15:56
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
可以这样看看:
#include <stdio.h>
main()
{
    union check
    {
        int i;
        char ch;
    } c;
    c.i = 0x161;
    printf("%c\n",c.ch);
}
2017-12-19 16:04
jingchun
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-12-19
得分:0 
回复 3楼 吹水佬
为什么不选A而选C呢?
2017-12-19 16:12
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用jingchun在2017-12-19 16:12:01的发言:

为什么不选A而选C呢?

输出格式是"%c", 就是char类型,一个字节
int 0x161 是4个字节,小端模式:61 01 00 00
第一个字节是0x61,表达为字符是'a'


收到的鲜花
  • jingchun2017-12-19 16:51 送鲜花  3朵   附言:我很赞同
2017-12-19 16:27
jingchun
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-12-19
得分:0 
回复 6楼 吹水佬
了解啦,Thanks♪(・ω・)ノ
2017-12-19 16:51
yuandefeng
Rank: 4
等 级:业余侠客
威 望:3
帖 子:51
专家分:216
注 册:2017-11-28
得分:10 
0x161是十六进制,十进制是353,换成二进制就是101100001
而a字符的ASCII码是97,换成二进制是1100001

一个char字符占一个字节也就是8位二进制,从0x161中选取后面8位,就是01100001,等于97的二进制,所以输出了a。
收到的鲜花
  • jingchun2017-12-19 21:47 送鲜花  3朵   附言:我很赞同
2017-12-19 20:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483509-1-1.html




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

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