筆者今天在刷題時,有乙個測試點老是通不過,經過多次檢查**和檢視大佬題解之後,發現是乙個小細節出了問題。
測試點的正確輸出是乙個大正數,筆者的測試輸出是乙個負數,差的離譜。
我一開始用的是int型的變數進行累加,因為測試點的數值太大了,導致該變數不斷增大超出了可表示的正數範圍,最後int型變數的最高一位變成1(這裡不明白的話可以詳細了解一下二進位制的儲存方式,這裡知道int型變數的最高位為符號位就行),該數就變成了負數。
unsigned呢是c語言的關鍵字,用來表示無符號數,即最高位不再用來儲存符號了,那麼該變數可儲存的範圍就擴大了一倍,問題也就迎刃而解了。
初學者還要注意的是,c語言中輸出unsigned型別變數的格式字元為%u。
C語言之unsigned 與signed
c語言之unsigned 與signed 無符號與有符號資料的操作區別在於當最高位,當最高位為0時都一樣 當最高位為1時,進行資料型別間的轉換操作就會產生問題,詳情如下 在c中,預設的基礎資料型別均為signed,現在我們以char為例,說明 signed char與unsigned char之間的...
C語言signed和unsigned之間的程式設計陷阱
c語言中的整數可分為有符號整數 signed 和無符號整數 unsigned 如果在程式中沒有特殊標識,整數型別預設為signed,這裡包括直接書寫的整數數字。定義unsigned類的整數時,可用unsigned作為字首,如果是直接書寫的數字,則在數字後加 u 如2456326u。signed類的整...
(三十四)signed和unsigned的用法
例如在char面前,是否加signed還是unsigned或者乾脆兩個都不加,主要是看用途。例如,char可以表示的範圍是256,例如從0 255。1 假如用char來儲存200,例如char str 200 在某些系統上可以,另外一些系統上就會出問題。所以為了避免出錯,假如你char的變數很可能超...