Char变量值未显示

时间:2013-12-19 08:35:37

标签: c++ char outputstream

请原谅模糊的标题(我不知道如何解决这个问题)。无论如何,在我的代码中我明确地声明了一些变量,两个是有符号/无符号 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))打印看起来像三角形的内容,但没有别的。

2 个答案:

答案 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,