web-dev-qa-db-fra.com

raccourci instruction c ++ if else

Je suis donc simplement curieux de savoir s'il existe une déclaration abrégée à ce sujet:

if(number < 0 )
  bigInt.sign = 0;
else
  bigInt.sign = 1;

Je vois toutes ces instructions brèves pour si a <b et autres.

Je ne sais pas comment le faire correctement et j'aimerais avoir des commentaires à ce sujet.

Merci!

En fait, je l'ai compris juste avant que vous ne répondiez.

J'utilise bigInt.sign = (number < 0) ? 1 : 0

16
kevorski

Oui:

bigInt.sign = !(number < 0);

Le ! L'opérateur évalue toujours true ou false. Une fois convertis en int, ceux-ci deviennent 1 et 0 respectivement.

Bien sûr, cela équivaut à:

bigInt.sign = (number >= 0);

Ici, les parenthèses sont redondantes mais je les ajoute pour plus de clarté. Tous les opérateurs de comparaison et relationnels sont évalués en true ou false.

16
M.M

La syntaxe de base pour utiliser l'opérateur ternaire est la suivante:

(condition) ? (if_true) : (if_false)

Pour vous, c'est comme ça:

number < 0 ? bigInt.sign = 0 : bigInt.sign = 1;
42
Bla...

essaye ça:

bigInt.sign = number < 0 ? 0 : 1
20
user3360398

Selon la fréquence à laquelle vous l'utilisez dans votre code, vous pouvez envisager les éléments suivants:

macro

#define SIGN(x) ( (x) >= 0 )

fonction Inline

inline int sign(int x)
{
    return x >= 0;
}

Ensuite, vous iriez simplement:

bigInt.sign = sign(number); 
1
Fantastic Mr Fox