Je viens juste de voir ça pour la première fois. Le code source, je suis à la recherche est en CQue signifie moins de 0. (0 point)?
if(rate < 0.){
...
}
else{
...
}
Qu'est-ce qui se passe si rate=0
?
Je viens juste de voir ça pour la première fois. Le code source, je suis à la recherche est en CQue signifie moins de 0. (0 point)?
if(rate < 0.){
...
}
else{
...
}
Qu'est-ce qui se passe si rate=0
?
0.
est un littéral de type double
(et la valeur zéro). En revanche, 0
est un littéral de type int
.
BTW: '0' est une constante octale. ;-) Comme _that_ fait toute la différence. (C11 6.4.4.1 1) – chux
@chux: Bien sûr - qui penserait autre chose? :-) –
Il interprète 0.
comme un double (0.0
) au lieu d'un nombre entier (0
).
Vérifiez le lien: de "working code", montrant les différentes tailles de différents types de zéro constantes:
0.
est un flottant constante et étant donné qu'il ne dispose pas d'un suffixe est un double
, de la section draft C99 standard6.4.4.2
constantes flottantes nous avons la grammaire suivante:
floating-constant: decimal-floating-constant hexadecimal-floating-constant decimal-floating-constant: fractional-constant exponent-partopt floating-suffixopt digit-sequence exponent-part floating-suffixopt [...] fractional-constant: digit-sequenceopt . digit-sequence digit-sequence . < ---- This covers 0. [...]
Nous avons alors en paragraphe 4 :
Une constante flottante non suffixée a le type double. Si suffixé par la lettre f ou F, il a type float. Si suffixe par la lettre l ou L, il a type long double.
cela devrait être '0.0' try' sizeof (0.) '. –
@GrijeshChauhan: '0.' et' 0.0' sont la même chose –
@DavidRobinson oui c'est ce que je veux dire '0 '' '0.0'. –