Eu rastreei um inseto extremamente desagradável escondido atrás desta pequena joia. Estou ciente de que, de acordo com a especificação C ++, os estouros assinados são um comportamento indefinido, mas somente quando o estouro ocorre quando o valor é estendido para a largura de bits sizeof(int). Pelo que entendi, incrementar …
118 c++ gcc undefined-behavior
É um comportamento indefinido imprimir ponteiros nulos com o %pespecificador de conversão? #include <stdio.h> int main(void) { void *p = NULL; printf("%p", p); return 0; } A questão se aplica ao padrão C, e não às implementações C.
93 c language-lawyer c99 undefined-behavior c11
Os ramos com comportamento indefinido podem ser considerados inalcançáveis ​​e otimizados como código morto?
Considere a seguinte declaração: *((char*)NULL) = 0; //undefined behavior Evoca claramente um comportamento indefinido. A existência de tal instrução em um determinado programa significa que todo o programa é indefinido ou que o comportamento só se torna indefinido quando o fluxo de controle atinge essa instrução? O programa a seguir …
88 c++ language-lawyer undefined-behavior dead-code unreachable-code
Por que printf ("% f", 0); dar comportamento indefinido?
A declaração printf("%f\n",0.0f); imprime 0. No entanto, a declaração printf("%f\n",0); imprime valores aleatórios. Percebo que estou exibindo algum tipo de comportamento indefinido, mas não consigo descobrir o porquê especificamente. Um valor de ponto flutuante em que todos os bits são 0 ainda é válido floatcom valor de 0. floate inttêm …
87 c++ c printf implicit-conversion undefined-behavior
Digamos que eu vá compilar algum código-fonte C ++ mal escrito que invoca um comportamento indefinido e, portanto (como eles dizem) "tudo pode acontecer". Do ponto de vista do que a especificação da linguagem C ++ considera aceitável em um compilador "compatível", "qualquer coisa" neste cenário inclui a falha do …
85 c++ language-lawyer undefined-behavior
Estouro assinado em C ++ e comportamento indefinido (UB)
Eu estou pensando sobre o uso de código como o seguinte int result = 0; int factor = 1; for (...) { result = ... factor *= 10; } return result; Se o loop for iterado ao longo do ntempo, factorserá multiplicado 10exatamente pelo ntempo. No entanto, factorsó é usado …
56 c++ undefined-behavior
O incremento de um ponteiro para uma matriz dinâmica do tamanho 0 é indefinido?
AFAIK, embora não possamos criar uma matriz de memória estática de tamanho 0, mas podemos fazê-lo com outras dinâmicas: int a[0]{}; // Compile-time error int* p = new int[0]; // Is well-defined Como eu li, page como um elemento de passado passado. Eu posso imprimir o endereço que paponta para. …
34 c++ pointers undefined-behavior dynamic-arrays
Copiando estruturas com membros não inicializados
É válido copiar uma estrutura em que alguns dos membros não são inicializados? Suspeito que seja um comportamento indefinido, mas, se for o caso, torna perigoso deixar membros não inicializados em uma estrutura (mesmo que esses membros nunca sejam usados ​​diretamente). Então, eu me pergunto se há algo no padrão …
29 c++ initialization copy-constructor undefined-behavior
C tem um equivalente de std :: less do C ++?
Recentemente, eu estava respondendo uma pergunta sobre o comportamento indefinido de fazer p < qem C quando pe qsão ponteiros para diferentes objetos / matrizes. Isso me fez pensar: C ++ tem o mesmo comportamento (indefinido) <nesse caso, mas também oferece o modelo de biblioteca padrão std::lessque garante a mesma …