我仍然是c ++的新手所以这可能是一个愚蠢的问题。在下面的代码中,为什么当我将索引的类型更改为signed char时,0.0
的计算结果为true。签名字符不是1字节整数吗?
index > 25
答案 0 :(得分:3)
让我们重新解释一下这个问题:
char index;
cin >> index;
可能更容易看到问题。当您将输入读入char
时,您将获得用户输入的第一个字符的字符代码。在典型的系统中,这是ASCII,数字的代码在48到57之间。
因此,如果您在签名字符时输入index
,则会得到一个> = 48的值。
答案 1 :(得分:0)
这是因为当用户输入0到25之间的值时,所评估的值与ascii表0 == 48(ascii)有关。数据类型char仅在输入的第一个值中,单个数字/字母,例如char foo =“1”