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
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
.
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;
essaye ça:
bigInt.sign = number < 0 ? 0 : 1
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);