integer-overflow

    7熱度

    2回答

    我在.NET程序目睹一個奇怪的現象: Console.WriteLine(Int64.MaxValue.ToString()); // displays 9223372036854775807, which is 2^63-1, as expected Int64 a = 256*256*256*127; // ok Int64 a = 256*256*256*128; // compi

    8熱度

    10回答

    我寫了一個方法,一個給定的數量從天轉換成毫秒: private long expireTimeInMilliseconds; ... public void setExpireTimeInDays(int expireTimeInDays) { expireTimeInMilliseconds = expireTimeInDays * 24 * 60 * 60 * 1000; }

    2熱度

    12回答

    鑑於這種代碼: int x = 20000; int y = 20000; int z = 40000; // Why is it printing WTF? Isn't 40,000 > 32,767? if ((x + y) == z) Console.WriteLine("WTF?"); ,知道int可以支持-32,768到+32,767。爲什麼這不會導致溢出?

    3熱度

    1回答

    我們正在Linux內核編寫代碼,所以儘可能地嘗試一下,我無法使PC-Lint/Flexelint在Linux內核代碼上工作。太多的內置符號等,但這是一個側面問題。 我們有任何數量的編譯器,以gcc開頭,但也有其他編譯器。隨着時間的推移,他們的警告選項變得越來越強大,他們的靜態分析工具也變得非常強大。 這是我想要捕捉的。是的,我知道它違反了代碼審查中容易理解的一些事情,比如「沒有幻數」和「小心位移」

    5熱度

    6回答

    我希望alwaysPositive能夠爲lareValue1和largeValue2(至少是1)分配一個包含所有可能值的正數。 下面的語句導致緩衝區溢出: int alwaysPositive = (largeValue1 + largeValue2)/2; 我知道我可以阻止它通過減去並添加: int alwaysPositive = largeValue1 + ((largeValue2 -

    1熱度

    3回答

    我有兩個有符號整數,我想減去它們。我需要知道它是否溢出。 int one; int two; int result = two-one; if (OVERFLOW) { printf("overflow"); } else { printf("no overflow"); } 就是這樣的。有沒有一個好的方法來做到這一點?

    3熱度

    2回答

    我已經包裝了一個dll方法,它具有一個整數作爲Web服務中的out參數。 在測試中,我發現當我期待-1時,我得到了65,535。我意識到dll使用了16位整數,並且在我的代碼中引用外部dll時指定了標準的.NET 32位整數。這是通過指定一個16位整數很快被修復的,一切都很好。 我的問題是爲什麼發生這種情況?我可以理解一個溢出發生,如果我試圖適應一個16位整數的32位整數,但我不知道爲什麼會發生這

    6熱度

    5回答

    換句話說,這是否按預期工作? int32 i = INT_MAX-1; int64 j = i * i; 還是我需要先把我先投到64位?

    7熱度

    4回答

    我在與℃的奇異問題++,它應該之前長數據類型溢出長。我所做的(迄今爲止取得成功)是讓整數的行爲像浮點數一樣,因此範圍[-32767,32767]映射到[-1.0,1.0]。它在哪裏跌倒,使用較大的參數代表浮大於1.0: inline long times(long a, long b) { printf("a=%ld b=%ld ",a,b); a *= b; pri