Whether plain chars are signed or unsigned is machine-dependent , but printable characters are always positive

lihanying2008 2008-10-17 09:16:16
Whether plain chars are signed or unsigned is machine-dependent , but printable characters are always positive
出自 the c programming language 2.2倒數第四段話結尾,覺得這句話中“可以打印的字符總是正的”是不是有點問題啊
請高人多多指教
...全文
62 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
e_sharp 2008-10-17
  • 打赏
  • 举报
回复
o
ForestDB 2008-10-17
  • 打赏
  • 举报
回复
领会实质和精神比较重要。
ForestDB 2008-10-17
  • 打赏
  • 举报
回复
char是8bit没错,但可打印字符在0~127中的一个子集,只有7bit,与符号位无关,大概这个意思。
帅得不敢出门 2008-10-17
  • 打赏
  • 举报
回复
unsigned char 取值范围是 0-255
你再看下ascii码的值范围 在这个范围内才是可打印的字符 注意是字符
这里说的是 "可打印的字符总是正的" 说的就是ascii码的范围了

int main()
{
char a= -3;
printf("%c",a); //你觉得输出什么
return 0;
}

baihacker 2008-10-17
  • 打赏
  • 举报
回复
这里的意思是指ascii码为0-127认为可打印.
而其它的打出出来是些笑脸之类的,不认为是可以打印的.
K行天下 2008-10-17
  • 打赏
  • 举报
回复
在TC中,因为支持扩展ASCII码,128以上的ASCII码可以打印出来
不过其它编译器打印不出来
zzzlll1983 2008-10-17
  • 打赏
  • 举报
回复
LiTuX 2008-10-17
  • 打赏
  • 举报
回复
注意,“可打印字符”的定义是:

In an implementation that uses the seven-bit US ASCII character set, the printing characters are those
whose values lie from 0x20 (space) through 0x7E (tilde);

(C99文档第181页脚注)

因而,“可打印字符”仅指从空格(0x20, 32)到“~”(0x7E, 126)的这些字符,当然一定是正的。

PS: 实际上,不管是“可打印字符”,“控制字符”,指的都是单纯的ASCII码,而不包含“扩展ASCII码”,扩展ASCII码的实现可以不同;

而ASCII码只有NUL不是正数,——NUL是0。

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧