我把这个问题归结为atoi()的输出类型转换问题。基本上,我将一个string.c_str()传递给atoi(),并且可以像我期望的那样'cout'该值(32)。但是,如果我做这样的类型化:C:将atoi()的输出转换为无符号字符?
string num = "32";
unsigned char x = (unsigned char)atoi(num.c_str());
cout << x << endl;
然后x结束没有任何值。它不仅仅是0或者什么,而是NULL。是什么赋予了?
你是怎么确定x没有价值的? –
好的。 '#include'并执行此操作:'cout << bitset<8>(x);'查看'x'的实际8位二进制表示以确认其实际为0. –
vvnraman
尝试'cout <<(long)x << endl; - 它应该打印'32'。 – eraxillan