请大家帮帮萌新!!!

C语言自学中。。。。。

C primer plus第三章中写道:

奇怪的是C语言将字符常量视为int类型而非char类型。
例如在int位32位 char为8位的ASCII系统中有下面代码

char grade = ‘B‘,

    本来‘B’对应的66储存在32位的储存单元中,现在却可以储存在八位的单元中(grade)。利用字符常量的这种特性,可以定义一个字符常量'FATE',即把四个独立的八位ASCII码储存在一个32位存储单元中。如果把这样的字符常量赋给char类型变量grate,只有最后八位有效。因此,grade的值是'E'。

    这段话怎么理解,为什么B就变成了E了,
    66的二进制是1000010 八位储存是01000010
    那FATE就是四个01000010
    那么后八位是不是还是01000010吗?
    那么为什么grade的值会变成‘E’
    E的ASCII是69,换成二进制储存是01000101难道后八位是这个?
    求解答!!!!!!!谢谢!!!!!!

他的意思是

#include <stdio.h>

int main()
{
    char ch2 = 'FATE';
    char grade = 'B';
    printf("%c\n", grade);
    grade = ch2;
    printf("%c\n", grade);
    return 0;
}

结果是
B
E

短短一小段程序,你要理解内存怎么分布的,ascii怎么回事,还有,你用的X86 CPU是一种little endian的处理器。所以明明是 FATE 结果 E 跑前面去了,你一个不理解,就完全不理解。更糟糕的是,万一你用了手机写程序,而手机是 big endian的,那么结果输出就是BF了。

初学者学 C语言能学到怀疑人生。

顺便说一下,C语言不适合自学,学了也没啥卵用。
很多人反驳说,C语言可以写操作系统啊,问题是你一个初学者又不是奔着为国家编写操作系统的使命去的,写操作系统和你有一毛钱关系不?
如果你学C语言感觉困难很大,建议你换一种语言。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^