Perguntas com a marcação «integer-overflow»


4
(-2147483648> 0) retorna verdadeiro em C ++?
-2147483648 é o menor número inteiro para o tipo inteiro com 32 bits, mas parece que ele transbordará na if(...)frase: if (-2147483648 > 0) std::cout << "true"; else std::cout << "false"; Isso será impresso truenos meus testes. No entanto, se convertermos -2147483648 em número inteiro, o resultado será diferente: if …


5
Por que o estouro de número inteiro não assinado é definido, mas o excesso de número inteiro assinado não é?
Estouro de número inteiro não assinado é bem definido pelos padrões C e C ++. Por exemplo, o padrão C99 ( §6.2.5/9) declara Uma computação envolvendo operandos não assinados nunca pode transbordar, porque um resultado que não pode ser representado pelo tipo inteiro não assinado resultante é reduzido pelo módulo, …


15
Como evitar o estouro em expr. A * B - C * D
Preciso calcular uma expressão que se pareça com:, A*B - C*Donde estão seus tipos: signed long long int A, B, C, D; Cada número pode ser muito grande (sem exceder o seu tipo). Embora A*Bpossa causar estouro, ao mesmo tempo, a expressão A*B - C*Dpode ser muito pequena. Como posso …
161 c++  c  integer-overflow 




8
Elenco não assinado para assinado eficiente, evitando comportamento definido pela implementação
Eu quero definir uma função que recebe um unsigned intcomo argumento e retorna um intmódulo congruente UINT_MAX + 1 para o argumento. Uma primeira tentativa pode ser assim: int unsigned_to_signed(unsigned n) { return static_cast<int>(n); } Mas, como qualquer advogado de linguagem sabe, a conversão de não assinado para assinado para …



1
Um valor de char definido como CHAR_MAX é garantido para envolver CHAR_MIN?
Meu código: #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); } Resultado: CHAR_MIN=-128 CHAR_MAX=127 c=-128 () Vemos que, quando incrementamos um charconjunto de variáveis ​​para CHAR_MAX, ele se volta para CHAR_MIN. Esse comportamento é garantido? Ou …
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.