看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 請教各位前輩高手.. 小弟宣告一個unsigned long的變數 用%ld的去印出變數, 卻顯示負數 用%lu去印的話, 則為正常的值 請問這是為什麼呀? 請指點小弟根本上的原因... 感謝 ! (小弟以為被宣告為unsigned long的變數, 被指定值的時候, 即使該值為負數, 存入變數後就會自動被轉為正數.. 這觀念似乎是錯的?!) 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.85.198.61
CaptainH:%ld = signed long int in decimal 12/18 01:35
CaptainH:他會把你的unsigned long當作 long解讀 12/18 01:36
xx52002:自動被轉成正數聽起來怪怪的,存進去都是一樣的東西啊XD 12/18 09:20
xx52002:只是第一個字元有沒有被當成正負號來看吧y 12/18 09:20
jackace:你要先弄清楚電腦怎麼儲存負數 12/18 11:58
Mije:二補數 12/18 12:04
jaw109:還有一種-2比100大的情況,不得不小心 12/18 15:01