[問題] 請教%ld與%lu的蠢問題XD

看板C_and_CPP (C/C++)作者 (大狗)時間12年前 (2013/12/18 01:30), 編輯推噓5(502)
留言7則, 5人參與, 最新討論串1/1
開發平台(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

12/18 01:35, , 1F
%ld = signed long int in decimal
12/18 01:35, 1F

12/18 01:36, , 2F
他會把你的unsigned long當作 long解讀
12/18 01:36, 2F

12/18 09:20, , 3F
自動被轉成正數聽起來怪怪的,存進去都是一樣的東西啊XD
12/18 09:20, 3F

12/18 09:20, , 4F
只是第一個字元有沒有被當成正負號來看吧y
12/18 09:20, 4F

12/18 11:58, , 5F
你要先弄清楚電腦怎麼儲存負數
12/18 11:58, 5F

12/18 12:04, , 6F
二補數
12/18 12:04, 6F

12/18 15:01, , 7F
還有一種-2比100大的情況,不得不小心
12/18 15:01, 7F
文章代碼(AID): #1Ii8ekQl (C_and_CPP)
文章代碼(AID): #1Ii8ekQl (C_and_CPP)