C++ Primer Plus 6th 3.6 复习题 第5题 下面两条C++语句是否等价

1765 人浏览 | 时间: 2019-02-03 22:52:48 | 作者: codexia 会员文章,禁止转载

C++ Primer Plus复习题3.6 第五题  下面两条C++语句是否等价

题目:
5.下面两条C++语句是否等价?
char grade = 65;
char grade = 'A';

答案:这两条语句并不真正等价,虽然对于某些系统来说,它们是等效的。最重要的是,只有在使用ASCII码上的系统上,第一条语句是将ASCII编码值设置为字母A,而第二条语句还可用于使用其他编码的系统。其次,65是一个int常量,而'A'是一个char常量。

C++技术网辅导详解解答:
    每一个字符都不是直接显示在屏幕的。不同的编码字符集,对应了不同的字符符号,所以我们看到了各种符号,有中文符号,也有英文符号,甚至还有表情和图案。不同的字符集有不同的字符,每一个字符都是一个图案。所以我们给这些图案编码存放在一个表格中,就有一个顺序,这个顺序值就是字符编码值。不同的字符集编码系统存储着不同的字符,编码值也不相同。每一个字符集系统都是独立的。只不过我们使用它们都是通过编码值来确定要使用的字符的。
    所以,同一个编码值虽然序号是一样的,但是在不同的字符集系统中,可能对应不同的符号。而我们在操作字符的时候,通过字符来赋值,就可以通用于各个字符集系统。而且可以进行转换。如果两个系统的两个字符一模一样,我们通过字符赋值和操作,我们可以通用于这两个系统,这个字符在这两个字符集系统的编码值不一定相同。因为在最终的结果上我们指定为大写字母A,不管在什么系统,只要有这个字母就错不了。而对于编码值,我们很难保证两个字符集系统的编码值能够兼容的,甚至有的字符集系统之间完全不一致。
    如果这两个语句工作在ASCII系统里,这个数字和这个字符是一一对应的,而如果是其他字符集编码系统,很可能是对不上的。所以此时是无法说是等同的。
    在实际开发中,很多时候我们会这么互用,只是需要确定好编码系统是ASCII就行。对于65和'A'两者本身来讲是不同的数据类型,也不能说是等价的。
    我们只能说他们在ASCII编码系统下的效果是一样的。

当前文章为会员文章,请前往[用户中心]开通会员后继续阅读。

C++ Primer Plus 6th习题