Articles of undefined behavior

Est-ce que sscanf (“123456789123456789123456789”, “% d”, & n) ont un comportement défini?

Lorsque sscanf() ou une autre fonction de la famille scanf reçoit une séquence de chiffres dont la valeur convertie dépasse la valeur maximale du type entier cible, la conversion devrait-elle être considérée comme ayant échoué? le comportement est-il défini du tout?

L’initialisation implique-t-elle une conversion de lvalue à rvalue? Est-ce que `int x = x;` UB?

Le standard C ++ contient un exemple semi-célèbre de recherche de noms “surprenante” au 3.3.2, “Point de déclaration”: int x = x; Cela initialise x avec lui-même, ce qui (étant un type primitif) n’est pas initialisé et a donc une valeur indéterminée (en supposant qu’il s’agit d’une variable automatique). Est-ce que ce comportement est indéfini? […]

Bogue de compilation C ++?

J’ai le code suivant: #include #include using namespace std; int main() { complex delta; complex mc[4] = {0}; for(int di = 0; di < 4; di++, delta = mc[di]) { cout << di << endl; } return 0; } Je m’attends à ce qu’il affiche “0, 1, 2, 3” et arrête, mais il produit une […]

Comment ai-je obtenu une valeur supérieure à 8 bits dans un entier de 8 bits?

J’ai retrouvé un insecte extrêmement méchant qui se cachait derrière ce petit bijou. Je suis conscient que selon la spécification C ++, les débordements signés sont un comportement indéfini, mais uniquement lorsque le débordement se produit lorsque la valeur est étendue à la sizeof(int) largeur de sizeof(int) . Si je comprends bien, l’incrémentation d’un caractère […]

Pourquoi cette boucle produit-elle «warning: l’itération 3u invoque un comportement indéfini» et génère plus de 4 lignes?

Comstackr ceci: #include int main() { for (int i = 0; i < 4; ++i) std::cout << i*1000000000 << std::endl; } et gcc génère l’avertissement suivant: warning: iteration 3u invokes undefined behavior [-Waggressive-loop-optimizations] std::cout << i*1000000000 << std::endl; ^ Je comprends qu’il y a un dépassement d’entier signé. Qu’est-ce que je ne peux pas obtenir, […]

Pourquoi cela pour la boucle de sortie sur certaines plates-formes et pas sur d’autres?

J’ai récemment commencé à apprendre le C et je prends un cours avec C comme sujet. Je joue actuellement avec des boucles et je rencontre des comportements bizarres que je ne sais pas comment expliquer. #include int main() { int array[10],i; for (i = 0; i <=10 ; i++) { array[i]=0; /*code should never terminate*/ […]