[問題] if判斷式內的 絕對值abs

看板C_and_CPP (C/C++)作者 (選ばれし子どもたち)時間4年前 (2021/07/30 01:29), 4年前編輯推噓7(709)
留言16則, 11人參與, 最新討論串1/1
https://imgur.com/a/OXBUD0N 如圖所示 第9行 if( abs(b[0]) > abs(a) ) c = b[0]; abs(b[0]) 等於|-10| = 10 abs(a) 等於|-2147483648| = 2147483648 最後c=b[0],就表示10>2147483648 怎麼會這樣? 還是在if判斷式內,abs有其他解讀? 願奉上100P -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.121.224.14 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1627579799.A.18F.html

07/30 01:44, 4年前 , 1F
2147483648 == 0, INT_MAX == 2147483647
07/30 01:44, 1F
痾...為何2147483648==0 ?

07/30 01:49, 4年前 , 2F
你overflow了
07/30 01:49, 2F
抱歉,不太明白 https://imgur.com/a/F8xUYQA 好奇怪,b=a取絕對值,但怎麼沒作用? ※ 編輯: ooww (122.121.224.14 臺灣), 07/30/2021 01:55:48

07/30 02:00, 4年前 , 3F
你翻一下計概會講的整數儲存範圍
07/30 02:00, 3F

07/30 02:05, 4年前 , 4F
有號數 overflow 是 UB 吧
07/30 02:05, 4F

07/30 02:19, 4年前 , 5F
undefined behavior 未定義行為
07/30 02:19, 5F
感謝

07/30 05:52, 4年前 , 6F
你知道int這個型態的最大表示數值範圍是多少嗎?
07/30 05:52, 6F

07/30 05:53, 4年前 , 7F
還是你覺得int可以你要塞多大就多大?XD
07/30 05:53, 7F
原來如此

07/30 11:23, 4年前 , 8F
能印看看 abs(-2147483648) 是多少,另外查一下是不
07/30 11:23, 8F

07/30 11:23, 4年前 , 9F
是UB
07/30 11:23, 9F

07/30 11:24, 4年前 , 10F
哦 上面做了
07/30 11:24, 10F

07/30 11:27, 4年前 , 11F
推薦文章: jserv 重新理解數值
07/30 11:27, 11F

07/30 12:50, 4年前 , 12F
無號數叫做 wraparound, 不是相同情形
07/30 12:50, 12F
感謝 ※ 編輯: ooww (122.121.236.143 臺灣), 07/30/2021 13:02:35

07/30 13:17, 4年前 , 13F
去念計算機概論
07/30 13:17, 13F

08/01 00:58, 3年前 , 14F
overflow......
08/01 00:58, 14F

08/05 12:44, 3年前 , 15F
XD 不錯啊 從錯誤中學習
08/05 12:44, 15F

10/01 18:36, , 16F
Overflow 了,整數溢位
10/01 18:36, 16F
文章代碼(AID): #1X0kMN6F (C_and_CPP)
文章代碼(AID): #1X0kMN6F (C_and_CPP)