Avertissement C6286
('constante non nulle' || 'expression') est toujours une constante non nulle. 'expression' n’est jamais évaluée et peut avoir des effets secondaires
Notes
Cet avertissement indique qu’une constante non nulle a été détectée sur le côté gauche d’une opération logique ou qui se produit dans un contexte de test. L’expression résultante prend toujours la valeur TRUE. En outre, le côté droit de l’expression semble avoir des effets secondaires, et ils seront perdus.
Vous pouvez examiner attentivement le côté droit de l’expression pour vous assurer que les effets secondaires nécessaires à une fonctionnalité appropriée ne sont pas perdus.
La (!0 || <expression>)
construction est couramment utilisée pour forcer l’exécution d’un bloc contrôlé.
Nom de l’analyse du code : NONZEROLOGICALORLOSINGSIDEEFFECTS
Exemple
Le code suivant génère cet avertissement :
#include <stdlib.h>
#include <stdio.h>
#define INPUT_TYPE 1
int test();
void f()
{
if (INPUT_TYPE || test())
{
puts("INPUT_TYPE == 1, expression not evaluated");
// code...
}
else
{
puts("INPUT_TYPE == 0. Call to test() returned 0");
// code...
}
}
Le code suivant montre une solution possible en cassant if
l’instruction en deux parties distinctes :
#include <stdlib.h>
#include <stdio.h>
#define INPUT_TYPE 1
int test();
void f()
{
int i;
if (INPUT_TYPE)
{
i = test();
// code...
}
else
{
puts("INPUT_TYPE false");
// code...
}
}
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour