【发布时间】:2012-10-21 02:28:43
【问题描述】:
可能重复:
Negative ASCII value
int main() {
char b = 8-'3';
printf("%c\n",b);
return 0;
}
我运行这个程序,我得到一个看起来像问号 (?) 的符号。
我的问题是为什么它打印那个而不打印任何内容,因为据我所知,ASCII 表中 b 的值是负 43,这是不存在的。
顺便说一句,当我编译这段代码时:
int main() {
char b = -16;
printf("%c\n",b);
return 0;
}
我什么也得不到。
【问题讨论】:
-
我确实得到了第二种情况下的不可打印字符
-
我给他一个值怎么知道会出现哪个标志?
-
我会说这真的取决于编译器。请阅读stackoverflow.com/questions/4690415/negative-ascii-value。你可以在这里参考扩展的 ASCII 表 - ascii-code.com
-
char 可能是有符号或无符号的,具体取决于实现。如果一个字符被表示为一个负数,那并不意味着它不存在。还有另外两种类型,signed char 和 unsigned char,它们当然分别是有符号和无符号的。