请原谅模糊的标题(我不知道如何解决这个问题)。无论如何,在我的代码中我明确地声明了一些变量,两个是有符号/无符号 int 变量,其他是有符号/无符号 char 类型变量。
我的代码:
#include <iostream>
int main(void)
{
unsigned int number = UINT_MAX;
signed int number2 = INT_MAX;
unsigned char U = UCHAR_MAX;
signed char S = CHAR_MAX;
std::cout << number << std::endl;
std::cout << "The size in bytes of this variable is: " << sizeof(number) << std::endl << std::endl;
std::cout << number2 << std::endl;
std::cout << "The size in bytes of this variable is: " <<sizeof(number2) << std::endl << std::endl;
std::cout << U << std::endl;
std::cout << "The size in bytes of this variable is: " << sizeof(U) << std::endl
<< std::endl;
std::cout << S << std::endl;
std::cout << "The size in bytes of this variable is: " <<sizeof(S) << std::endl << std::endl;
std::cin.get();
std::cin.get();
return 0;
}
很抱歉代码因长度过长而被扰乱,但我的问题是我的 char 变量不是&#34;打印&#34;到我的输出。它以字节为单位输出它们的大小,但无论我做什么,我似乎无法使其工作。此外,第二个 char 变量(带符号(S))打印看起来像三角形的内容,但没有别的。
答案 0 :(得分:6)
试试这个:
std::cout << (int)U << std::endl;
std::cout << "The size in bytes of this variable is: " << sizeof(U) << std::endl
<< std::endl;
std::cout << (int)S << std::endl;
std::cout << "The size in bytes of this variable is: " <<sizeof(S) << std::endl << std::endl;
解释非常简单:当类型为char
时,cout
正在尝试生成一个符号输出,其中whitespace
为255或类似于127的非常类似的三角形。类型为int
,cout只打印变量的值。例如在C:
printf("%d", 127) // prints 127
printf("%c", 127) // prints triangle, because %c formatter means symbolic output
答案 1 :(得分:0)
它们被打印但你看不到它。 您可以打开“limits.h”文件:
#define CHAR_BIT 8 /* number of bits in a char */
#define SCHAR_MIN (-128) /* minimum signed char value */
#define SCHAR_MAX 127 /* maximum signed char value */
#define UCHAR_MAX 0xff /* maximum unsigned char value */
然后在ASCII表中查找UCHAR_MAX和CHAR_MAX,