在C ++中给出以下代码片段:
char a = 0x0a;
char b = 0x80;
char c = a ^ b;
屏幕背后会发生什么?当我使用cout输出c时,没有输出。 char a和char b是否会转换为二进制格式?什么是c的格式?
答案 0 :(得分:4)
c将是0x8a,通常不是可打印字符,请参阅(例如)http://www.unicodetools.com/unicode/img/latin-iso-8859-1.gif
(既不是0x0a(换行)也不是0x80)
cout将打印与c参数的c值对应的字符,这就是你没有看到任何输出的原因。
您可能希望使用printf打印c的数值,或将c转换为int。
您可能也对此问题感兴趣,该问题讨论了在C:Is there a printf converter to print in binary format?
中打印二进制数答案 1 :(得分:1)
计算机中的所有数字都是二进制格式。
0x0a
,a.k.a。10
(十),表示为
1010
和0x80
,a.k.a。128
,表示为
10000000
如果你和那些人相比,你得到138。
显然,如果您打印char
138,您的终端无法输出任何有用的内容。