2013-12-19 62 views
3

請原諒模糊標題(我不知道如何解決問題)。無論如何,在我的代碼中,我明確地聲明瞭幾個變量,其中兩個是有符號/無符號的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變量(signed(S))打印看上去像三角形的東西,但沒有其他東西。

+1

扮演他們爲int要顯示的值,而不是ASCII字符。 –

回答

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; 

的解釋是如此簡單:當類型爲charcout試圖產生一個符號輸出是whitespace爲255或127。當一個相當狀三角類型是int,cout只是輸出變量的值。例如在C中:

printf("%d", 127) // prints 127 
printf("%c", 127) // prints triangle, because %c formatter means symbolic output 
+0

這個答案不能比現在更進一步改進。做得好! – Jake2k13

+2

大的修改,最好是這樣投射:static_cast (VAR)或(int)? – Jake2k13

+1

在你的情況下,它們[相同](http://stackoverflow.com/questions/103512/in-c-why-use-static-castintx-instead-of-intx)。 – Netherwire

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,