作者yenhun (大狗)
看板C_and_CPP
標題[問題] 請教%ld與%lu的蠢問題XD
時間Wed Dec 18 01:30:19 2013
開發平台(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