«integer-overflow» etiketlenmiş sorular

Tamsayı taşması, bir işlemin sonucu, temeldeki tamsayı türü tarafından temsil edilebilen maksimum değerden daha büyük olduğunda oluşur.

30
İmzasız tam sayı çarpma taşmasını nasıl tespit edebilirim?
На этот вопрос есть ответы на yığın taşması на русском : Можно ли на языках C / C ++ определить целочисленное переполнение? Bir b = c tüm çözümlerini bulmak için C ++ bir program yazıyordu , burada a , b ve c birlikte 0-9 arasındaki tüm basamakları tam olarak bir …
618 c++  c  integer-overflow 

4
(-2147483648> 0) C ++ 'da true değerini döndürür?
-2147483648, 32 bitli tamsayı türü için en küçük tamsayıdır, ancak if(...)cümlede taşacak gibi görünüyor : if (-2147483648 > 0) std::cout << "true"; else std::cout << "false"; Bu truebenim testimde yazdırılacak . Ancak, -2147483648 değerini tamsayıya kullanırsak sonuç farklı olur: if (int(-2147483648) > 0) std::cout << "true"; else std::cout << "false"; …


5
Neden imzasız tamsayı taşması tanımlı davranış, ancak imzalı tamsayı taşması tanımlanmadı?
İmzasız tamsayı taşması hem C hem de C ++ standartları tarafından iyi tanımlanmıştır. Örneğin, C99 standardı ( §6.2.5/9) İmzasız işlenenleri içeren bir hesaplama asla üstesinden gelemez, çünkü elde edilen imzalanmamış tamsayı türü ile temsil edilemeyen bir sonuç, modüle edilen sonuç tarafından temsil edilebilen en büyük değerden daha büyük bir sayıdır. …


15
İfadede taşma nasıl önlenir. A * B - C * D
Ben A*B - C*Donların türü : gibi görünüyor bir ifade hesaplamak gerekir : signed long long int A, B, C, D; Her sayı (tür taşan değil) gerçekten büyük olabilir. Taşmaya A*Bneden olabilirken, aynı zamanda ifade A*B - C*Dgerçekten küçük olabilir. Nasıl doğru hesaplayabilirim? Örneğin:, MAX * MAX - (MAX - …
161 c++  c  integer-overflow 




8
Uygulama tanımlı davranıştan kaçınarak etkili imzasız-imzalı çevrim
Bir unsigned intbağımsız değişken alan ve bağımsız değişkene intUINT_MAX + 1 uyumlu bir modulo döndüren bir işlev tanımlamak istiyorum . İlk deneme şuna benzeyebilir: int unsigned_to_signed(unsigned n) { return static_cast<int>(n); } Ancak herhangi bir dil avukatının bildiği gibi, INT_MAX'tan daha büyük değerler için imzasızdan imzalıya geçiş uygulama tanımlıdır. Bunu, (a) …


3
C ++ 'da işaretli tamsayı taşması hala tanımsız bir davranış mı?
Bildiğimiz gibi, işaretli tamsayı taşması tanımsız bir davranıştır . Ancak C ++ 11 cstdintbelgelerinde ilginç bir şey var : tam olarak 8, 16, 32 ve 64 bit genişliğinde, doldurma bitleri olmadan ve negatif değerler için 2'nin tümleyicisini kullanan işaretli tamsayı türü (yalnızca uygulama doğrudan türü destekliyorsa sağlanır) Bağlantıya bakın Ve …



1
CHAR_MAX değerine göre bir char değerinin CHAR_MIN değerine çevrilmesi garanti ediliyor mu?
Kodum: #include <stdio.h> #include <limits.h> int main() { char c = CHAR_MAX; c += 1; printf("CHAR_MIN=%d CHAR_MAX=%d c=%d (%c)\n", CHAR_MIN, CHAR_MAX, c, c); } Çıktı: CHAR_MIN=-128 CHAR_MAX=127 c=-128 () Bir chardeğişken setini artırdığımızda, değişkenin CHAR_MAXetrafına sarıldığını görürüz CHAR_MIN. Bu davranış garanti ediliyor mu? Yoksa tanımlanmamış davranış mı yoksa uygulama tarafından …
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.