2013-11-26 32 views
1

在第44頁的類型轉換,以K & R C程序設計語言,在底部它說:與無符號operands-Ç

例如,假設int是16位長爲32位。然後,因爲1U是一個int,所以它被提升爲一個帶符號的long。但-1L> 1UL,因爲-1L被提升爲無符號長整型,因此似乎是一個很大的正數。

我真的不知道這是在說什麼。我認爲它是比較比特,但我真的不知道。你能描述一下這是在說什麼嗎?

P.S.我真的很喜歡C. C是我的第一個編程語言。那麼,你能否儘可能簡單地回答這個問題?謝謝。

回答

4

在C中,相同的基本位0xffff有兩個不同的值。

如果你當作「簽字」的16位號碼,然後0xffff是-1,如果是「無符號」,那麼0xffff爲65535

當你比較有符號值和無符號值,位在有符號值中被視爲「無符號」,如果該值爲負值,則新值可能不是您想要的值。

+0

謝謝。這很有幫助。 – James