[C&C++]關於C語言

在打程式時會先宣告,

unsigned int是作無號數的宣告嗎?

那請問何時該用無號數宣告(unsigned int)?

有的題目要求使用者輸入數字,用int會跑不出unsigned int要跑的

另外想請問https://tw.knowledge.yahoo.com/question/question?q... main(void)

{

unsigned int a = 32768 ;

printf(\"%d\\n\",a) ;

}

為什麼印出來的值不是 32768 ?

而是 -32768 ? "

我看不懂他的最佳解答 > <

是把有號數都當負數的意思?

1 個解答

評分
  • 6 年前
    最佳解答

    printf(); 中引數 %d 為有號 int ( signed int )

    注意到 signed int 的儲存方式為 2 的補數 ( 2's complement 可以 wiki )

    簡單來說二進位表示,第一位代表符號 ( 正負 )

    1xxx xxxx ... 為負數,反之為正數。

    unsigned int 則是從 0 開始,不須存正負

    若仍用 %d 可能會有意外的結果,要看編譯器而定

    所以用 %u 才能保證正確印出

    C++ 的 cout 則會自行判斷型別,比較不用另外考慮

還有問題?馬上發問,尋求解答。