Questions sur undefined-behavior

14
réponses

Pourquoi ces constructions utilisent - elles un comportement non défini pré-et post-increment?

#include <stdio.h> int main(void) { int i = 0; i = i++ + ++i; printf("%d\n", i); // 3 i = 1; i = ... int x[2] = { 5, 8 }, y = 0; x[y] = y ++; printf("%d %d\n", x[0], x[1]); // shouldn't this print 0 8? or 5 0? }
demandé sur 2009-06-04 13:17:52
11
réponses

Quelle est la stricte aliasing règle?

en posant des questions sur comportement commun non défini dans C , les âmes plus éclairées que je me suis référé à la règle stricte d'alias. De quoi parlent-ils?
demandé sur 2008-09-19 05:30:27
9
réponses

Comportement non défini, non spécifié et défini par la mise en œuvre

Quelle est la différence entre un comportement non défini, non spécifié, et défini par implémentation en C et C++?
demandé sur 2010-03-08 00:10:30
22
réponses

La variable locale non initialisée est-elle le générateur de nombres aléatoires le plus rapide?

je sais que la variable locale non initialisée est un comportement non défini ( UB ), et aussi la valeur peut avoir ... ible(rand()%2==0?true:false); } } et aussi plus rapide que les autres générateurs de nombres aléatoires?
demandé sur 2015-07-31 09:52:42
11
réponses

Pourquoi f (i = -1, i = -1) n'est-il pas défini?

je lisais à propos de ordre des violations d'évaluation , et ils donnent un exemple qui me laisse perplexe. ... es opérateurs d'affectation surchargés (au lieu de simples scalaires), alors nous pouvons aussi avoir des problèmes.
demandé sur 2014-02-10 10:31:32
14
réponses

Pourquoi cela pour la sortie de boucle sur certaines plateformes et pas sur d'autres?

j'ai récemment commencé à apprendre C et je prends un cours avec C comme sujet. Je suis actuellement en train de jouer ... nellement. Je ne peux pas comprendre comment le comportement peut être différent dans différents os et ordinateurs.
demandé sur 2015-06-24 05:34:05
11
réponses

Quels sont tous les comportements communs non définis qu'un programmeur C++ devrait connaître? [fermé]

Quels sont tous les comportements courants non définis qu'un programmeur C++ devrait connaître? Dire, comme: a[i] = i++;
demandé sur 2008-12-15 09:55:42
5
réponses

Pourquoi un comportement de dépassement d'entier non signé est-il défini mais pas un comportement de dépassement d'entier signé?

"unsigned integer overflow" est bien défini par les normes C et C++. Par exemple, la norme C99 ( §6.2.5/9 ) stipu ... le débordement d'entier Est-il historique ou (encore mieux!) une raison technique à cette divergence?
demandé sur 2013-08-13 00:04:18
6
réponses

Pourquoi le débordement d'entier sur X86 avec GCC cause une boucle infinie?

le code suivant entre dans une boucle infinie sur GCC: #include <iostream> using namespace std; int ... vq %rbx, %rdi addl , %r12d call _ZNSo3putEc movq %rax, %rdi call _ZNSo5flushEv cmpl , %r12d jne .L5
demandé sur 2011-10-07 06:24:43
2
réponses

Quand l'invocation d'une fonction membre d'une instance null entraîner un comportement non défini?

considérons le code suivant: #include <iostream> struct foo { // (a): void bar() { std::cout < ... . est-ce que (a) se traduit par un comportement non défini? Si les deux fonctions (et x ) sont statiques?
demandé sur 2010-03-19 02:20:44
8
réponses

Le comportement "struct hack" est-il techniquement indéfini?

Ce que je demande, c'est le bien connu "dernier membre d'une structure a longueur variable" truc. struct T { ... e sujet, je voudrais que les réponses s'en tiennent spécifiquement à la version de l'astuce comme indiqué ci-dessus.
demandé sur 2010-09-14 21:10:38
2
réponses

Est-ce que passer un objet C++ dans son propre constructeur est légal?

je suis surpris de découvrir accidentellement que les œuvres suivantes: #include <iostream> i ... Note, Je ne demande pas si c'est utile ou une bonne idée; je bricole juste pour en savoir plus sur les classes.
demandé sur 2015-09-16 15:20:56
5
réponses

Accès à un membre inactif du syndicat et à un comportement non défini?

j'avais l'impression que l'accès à un membre union autre que le dernier ensemble est UB, mais je n'arrive pas à trouve ... onses affirmant que c'est UB mais sans aucun support de la norme). donc, est-ce un comportement non défini?
demandé sur 2012-07-07 11:37:00
9
réponses

Est-ce que "comportement non défini" permet vraiment *quelque chose* d'arriver? [dupliquer]

cette question a déjà une réponse ici: comportement non défini, non spécifié et dé ... quer comment il permet des optimisations que implémentation-défini comportement ne serait pas permettre.
demandé sur 2015-08-21 07:53:14
10
réponses

Pourquoi printf ("%f", 0); donne un comportement non défini?

La déclaration printf("%f\n",0.0f); imprime 0. cependant, la déclaration printf("%f\n", ... e ce comportement? P. S. le même comportement peut être vu si j'utilise int i = 0; printf("%f\n", i);
demandé sur 2016-07-26 21:23:10
12
réponses

À quel moment dans la boucle le dépassement d'entier devient-il un comportement non défini?

ceci est un exemple pour illustrer ma question qui implique un code beaucoup plus compliqué que je ne peux pas poster ... i sont différents parce que je serais intéressé par des réponses pour les deux langues si elles sont différentes.)
demandé sur 2016-10-07 13:12:29
5
réponses

Comportement non défini et points de séquence rechargés

considérez ce sujet comme une suite du thème suivant: versement précédent comportement ... turn *this; } Index & inc() { state++; return *this; } };
demandé sur 2011-01-09 11:40:54
12
réponses

Détection du débordement signé en C / C++

à première vue, cette question peut ressembler à un duplicata de Comment détecter un débordement d'entier? , mais ... contrôles en faisant vos propres calculs de complément, mais je ne suis pas vraiment sûr de savoir comment faire ça.
demandé sur 2010-10-15 21:16:11
5
réponses

Est-ce que masquer avant un décalage gauche non signé en C/c++ est trop paranoïaque?

cette question est motivée par la mise en œuvre d'algorithmes cryptographiques (par exemple SHA-1) en C/C++, l'écriture ... soit pas traduite en rotation de bits, ce qui signifie que maintenant 4 opérations sont effectuées au lieu de 1.
demandé sur 2016-10-10 21:36:03
2
réponses

Pourquoi est-ce un comportement indéfini?

ma réponse à cette question était cette fonction: inline bool divisible15(unsigned int x) { //286331 ... firme qu'il est plus rapide que de prendre le reste de la division par 15. (Toutefois pas sur tous les compilateurs)
demandé sur 2013-09-10 00:54:30
8
réponses

Est de l'accès à un réseau mondial en dehors de son lié comportement indéfini?

je viens d'avoir un examen dans ma classe aujourd'hui --- lecture du code C et entrée, et la réponse requise était ce ... ns VSE, dans lequel la plupart des valeurs sont 0 mais certains ont une valeur aléatoire comme Vyktor a souligné.
demandé sur 2014-10-17 18:09:45
1
réponses

La norme C++ a-t-elle changé en ce qui concerne l'utilisation de valeurs indéterminées et de comportements non définis dans C++14?

comme indiqué dans L'initialisation entraîne-t-elle une conversion de la valeur à la valeur de référence? int x = x; ... ce qui concerne les valeurs indéterminées et le comportement non défini qui a entraîné ce changement dans l'exemple?
demandé sur 2014-05-02 00:04:20
10
réponses

Pourquoi a=(A+b) - (b = a) est un mauvais choix pour échanger deux entiers?

je suis tombé dans ce code pour échanger deux entiers sans utiliser une variable temporaire ou l'utilisation d'opérate ... l'ordre d'évaluation. ma question Est: est - ce une solution acceptable pour échanger deux entiers?
demandé sur 2013-12-27 16:24:38
3
réponses

Le dépassement d'entier signé est-il encore un comportement non défini dans C++?

comme nous le savons, signed integer overflow est un comportement non défini . Mais il y a quelque chose d'intér ... de complément de deux. Ainsi, int8_t dénote un tel type d'entier signé avec une largeur d'exactement 8 bits.
demandé sur 2013-04-24 13:24:05
10
réponses

Une implémentation C++ qui détecte un comportement non défini?

un nombre énorme d'opérations en C++ donnent lieu à un comportement non défini, où la spécification est complètement m ... ur déterminer si une TM accepte une certaine entrée, même si elle est encore indécidable en général. Merci!
demandé sur 2011-08-30 06:01:21
3
réponses

Quand est-il valide d'accéder à un pointeur vers un objet "mort"?

tout d'abord, pour clarifier, je suis pas parler de déréférencement des pointeurs invalides! Considéron ... 'ai cité la norme C99 ci-dessus, je serais intéressé de savoir si le comportement diffère dans l'une des normes C++.
demandé sur 2013-06-10 17:17:50
4
réponses

L'initialisation implique-t-elle une conversion de la valeur à la valeur? Is 'int x = x;' UB?

la norme C++ contient un exemple semi-célèbre de recherche de nom "surprenante" dans 3.3.2, "Point de déclaration": ... main droite x subit cette conversion? Dans l'affirmative, l'exemple aurait-il en fait un comportement non défini?
demandé sur 2013-02-18 15:55:30
5
réponses

Dans C++11, est-ce que `i += ++i + 1` présente un comportement non défini?

cette question est venue pendant que je lisais (les réponses à) alors pourquoi est-ce que i = ++i + 1 bien défini e ... Il est difficile de justifier UB en utilisant une opération dont l'existence même n'est qu'implicite dans la norme.
demandé sur 2014-06-13 01:17:28
3
réponses

Pourquoi les expressions constantes ont-elles une exclusion pour les comportements non définis?

je faisais des recherches sur ce qui est permis dans une "expression constante du noyau* , qui est couvert dans la ... pour référence, ceci ressemble à la dernière révision de la proposition pour expressions constantes généralisées .
demandé sur 2014-01-24 01:12:02
4
réponses

Pas d'avertissement ou d'erreur (ou de panne d'exécution) lorsque la contre-différence conduit à une ambiguïté

tout d'abord, rappelez-vous qu'un .NET String est à la fois IConvertible et ICloneable . maintenant, co ... la prime: Toujours pas de nouvelles réponses reçues. S'il n'y a pas de réponse, je dois donner la prime à Ben Dhaou.
demandé sur 2012-11-26 19:51:34