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?
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? […]
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 […]
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 […]
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, […]
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*/ […]