我刚刚选择了C ++,而我刚刚完成了一些代码。问题是,这段代码无限期地运行。有人可以解释一下原因吗?我们的想法是生成一个字符表及其相应的整数,这对于a-z,A-Z和1-100。
#include "std_lib_facilities.h"
int main()
{
for (char table_value_lower = 'a'; table_value_lower <= 'z'; ++table_value_lower)
cout << table_value_lower << '\t' << int(table_value_lower) << '\n';
for (char table_value_upper = 'A'; table_value_upper <= 'Z'; ++table_value_upper)
cout << table_value_upper << '\t' << int(table_value_upper) << '\n';
for (char table_value_integer = '0'; table_value_integer <= '100'; ++table_value_integer)
cout << table_value_integer << '\t' << int(table_value_integer) << '\n';
}
答案 0 :(得分:3)
这是你的问题:
for (char table_value_integer = '0'; table_value_integer <= '100'; ++table_value_integer)
cout << table_value_integer << '\t' << int(table_value_integer) << '\n';
你最接近你所做的事情就是:
for (char table_value_integer = '0'; table_value_integer <= '9'; ++table_value_integer)
cout << table_value_integer << '\t' << int(table_value_integer) << '\n';
在ASCII character set中,字符'0'
的值为48(0x30)。如果你增加,你得到49,即字符'1'
,然后是50,这是字符'2'
,依此类推,直到你到达57,即字符'9'
。当你再次递增它时,你得到58,即字符':'
。它似乎永远不会像你想象的那样'10'
。你不能通过增加一个字符来制作两个字符。
如果你真的想将它增加到100,那么你会这样做:
for (char table_value_integer = '0'; table_value_integer <= 100; ++table_value_integer)
cout << table_value_integer << '\t' << int(table_value_integer) << '\n';
顺便说一下,值100是字符'd'
。查看我链接的ASCII图表。
答案 1 :(得分:0)
table_value_integer <= '100'
没有意义。如果您想转到100,请使用100
(无引号):table_value_integer <= 100
。
使用引号,它是一个多字节字符或没有定义,你正在检查不同于你期望的东西。
此外,您可能需要char table_value_integer = 0;
(而不是'0'
)