第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么只有在 INT_MAX 加上 7 或更大時(shí)才會(huì)發(fā)生溢出?

為什么只有在 INT_MAX 加上 7 或更大時(shí)才會(huì)發(fā)生溢出?

慕萊塢森 2022-11-02 16:44:33
我有 Leetcode 提供的解決方案,讓我感到困惑的是,將 7(或更低的值)添加到 Integer.MAX_VALUE 或?qū)?-8(或更低的值)添加到 Integer.MIN_VALUE 不會(huì)導(dǎo)致上溢或下溢分別。我的邏輯是,如果你有 Integer.MAX_VALUE,加 1 會(huì)導(dǎo)致溢出。如果你有 Integer.MIN_VALUE,減 1 會(huì)導(dǎo)致下溢。我對上溢和下溢的理解哪里錯(cuò)了?class Solution {    public int reverse(int x) {        int rev = 0;        while (x != 0) {            int pop = x % 10;            x /= 10;            if (rev > Integer.MAX_VALUE/10 || (rev ==     Integer.MAX_VALUE / 10 && pop > 7)) return 0;            if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) return 0;            rev = rev * 10 + pop;        }        return rev;    }}
查看完整描述

2 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊

是的,通常加 1Integer.MAX_VALUE會(huì)導(dǎo)致溢出,從Integer.MIN_VALUE. 但這不是這里發(fā)生的事情。

此代碼執(zhí)行整數(shù)除以10,這會(huì)截?cái)嗳魏涡?shù)部分。將Integer.MAX_VALUE2147483647) 除以 10 時(shí),代碼預(yù)期乘以 10 并添加下一個(gè)數(shù)字。該商是214748364,乘以102147483640,有可能再加上另一個(gè) 7 而不會(huì)溢出。同樣在負(fù)數(shù)方面,將Integer.MAX_VALUE-2147483648) 除以 10 產(chǎn)生-214748364,乘以 10 產(chǎn)生,有可能在不溢出的情況-2147483640下添加另一個(gè)。-8

此代碼考慮了值范圍極值的最后一位,Integer并小心避免溢出。


查看完整回答
反對 回復(fù) 2022-11-02
?
拉丁的傳說

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊

Integer.MAX_VALUE2147483647

這意味著:Integer.MAX_VALUE/10214748364

你將要做:rev = rev * 10 + pop

所以 if rev > 214748364, thenrev * 10會(huì)導(dǎo)致溢出。

或者 if rev == 214748364, thenrev * 102147483640,并且rev * 10 + pop會(huì)導(dǎo)致溢出 if pop > 7。


查看完整回答
反對 回復(fù) 2022-11-02
  • 2 回答
  • 0 關(guān)注
  • 118 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號