首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

对书下的有句话感到很奇怪,求解释!多谢!

2013-02-24 
对书上的有句话感到很奇怪,求解释!!谢谢!!原话:“普通计算机的char型究竟是有符号的或者是无符号的完全取决

对书上的有句话感到很奇怪,求解释!!谢谢!!
原话:
“普通计算机的char型究竟是有符号的或者是无符号的完全取决于计算机,但是可打印的字符则总是无符号的。一般情况下,char型所表达的是可打印字符。”

疑问:
1、什么是可打印字符?是指ascii码么?
2、如果可打印字符是ascii码的话,那么我定义一个signed char ch = 65照样可以printf %c出来。是不是我的理解有问题?

求解释!!谢谢!!
[解决办法]
哪本书?

man isprint

可打印字符是ascii码的一个子集,ascii前32个字符属于控制字符。

[解决办法]
那段话每一句都有错误,正确的应该这样讲:

C语言(而非普通计算机)的char型究竟是有符号的或者是无符号的完全取决于编译器(而非计算机),char类型并无“可打印字符”的概念,可打印字符属于流的概念,char类型字符仅分为两部分:基本字符集及扩展字符集,基本字符集保证非负,而扩展字符集是实现相关的。

此外,ASCII码字符集仅是执行字符集的实现之一,执行字符集还可以由其它字符集实现,例如IBM使用的EBCDIC码,ASCII字符集仅是可打印字符中的一种可能实现,不要将可打印字符与ASCII混为一谈。

最后一个问题,不要写signed char ch = 65;这样的代码,65是一个魔数,不良风格。如上所述,并非所有实现都是用ASCII字符集的,遇到其它执行字符集的实现,上述这一句就完蛋了。如果你想用字符'A'初始化ch,可以这样写:

char ch = 'A';
[解决办法]
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

热点排行