初学者,无计算机基础,正在阅读C Primer Plus 第三章。P53提到可以通过使用'\0oo'与'\xhh'的格式来用八进制/十六进制表示ASCII码,按照这种格式将'\0x41'赋给了char类型的变量,用%c的转换说明打印出来后却没有得到“A”的结果,而是得到了“1”。
不是很清楚自己的编译器不支持C的某些标准。一开始以为是因为缺少支持该前缀的某些头文件所以程序输出了内存中的任意值,但重复打印了几次后发现似乎对应的数值是固定的。试着把65赋给char变量再用%c输出,发现打印出了“5”。是自己计算机使用的字符编码不是ASCII吗?请问如果是这种情况怎么查询自己计算机使用的字符编码呢?
百度过了,没能找到类似问题。我明白自己的问题很蠢,但是仍然希望能得到解答,提前感谢可能会来回答的各位。T T
代码:
#include <stdio.h>
int main(void)
{
char first='\0x41';
char second='0x42';
char a='65';
printf("%c %d\n",first,first);
printf("%c %d\n",second,second);
printf("%c",a);
return 0;
输出结果:
使用的编译软件是Dev-C++,5.11版本。