我爱橙 发表于 2022-4-9 22:44:25

EX4.9 EX10.1 char c = '\72';八进制

本帖最后由 我爱橙 于 2022-6-10 15:25 编辑

若有说明语句:char c = '\72';则变量c( ).
a. 包含1个字符 √
b. 包含2个字符
c. 包含3个字符
d. 说明不合法,c的值不确定

#include <stdio.h>

int main()

{
char c='\72';

printf("%c",c);
return 0;
}

为什么输出是:

查表0011 1010        58        3A        :
0100 1000        72        48        H


char c; 声明它是一个 char ,只有 1个字符 的 内存空间
所以 不可能 包含2个字符,也不可能 包含3个字符.b和c可以排除了.
'\72' -- ,字符常量 通常 用单引号括起来,所以单引号是对的,没有疑问.
平时看到的 字符常量 有 'a','B','3','\0';'\n' ...,那么 '\72' 对不对呢
这里要记住,用反斜杠带数字,是 八进制数,八进制数 只能用到数字 0,1,2,3,4,5,6,7
如果出现 8,9 就不合法,现在 72 是 合法的.
另外,字符常量 最大占 1 个字节,数值不能超出 ASCII 码最大值.八进制数 072 显然没超出.所以 排除了 d.
答案 是 a.包含1个字符

isdkz 发表于 2022-4-9 22:51:36

\72 表示的是 8 进制数 72 对应的字符,8 进制 72 为 10 进制 58,

十进制 58 对应的字符就是 “:”

https://static01.imgkr.com/temp/e19506d2acd141f6bb3d08d7285d917c.png

ba21 发表于 2022-4-9 22:52:13

\ 后面是 8进制。
页: [1]
查看完整版本: EX4.9 EX10.1 char c = '\72';八进制