Я только что увидел это в первый раз. Исходный код Я смотрю на это в CЧто означает меньше 0. (0 точка)?
if(rate < 0.){
...
}
else{
...
}
Что произойдет, если rate=0
?
Я только что увидел это в первый раз. Исходный код Я смотрю на это в CЧто означает меньше 0. (0 точка)?
if(rate < 0.){
...
}
else{
...
}
Что произойдет, если rate=0
?
0.
является буквальным типом double
(и нулевого значения). В отличие от этого, 0
является литералом типа int
.
BTW: '0' является восьмеричной константой. ;-) Как _that_ имеет значение. (C11 6.4.4.1 1) – chux
@chux: Ну, конечно, кто бы мог подумать что-нибудь еще? :-) –
Он интерпретирует 0.
как двойной (0.0
) вместо целого числа (0
).
Проверить ссылку: из "working code", показывающего различных размеров различных типов нулевых констант:
0.
является плавающей постоянной и так как он не имеет суффикс она является double
, из draft C99 standard раздела 6.4.4.2
Плавающие константы мы имеем следующую грамматику:
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. [...]
Затем мы имеем в пункт :
Неиспользуемая плавающая константа имеет тип double. Если суффикс буквой f или F, он имеет тип float. Если суффикс буквой l или L, он имеет тип long double.
Это должно быть '0.0' try' sizeof (0.)'. –
@GrijeshChauhan: '0.' и' 0.0' то же самое –
@DavidRobinson да это то, что я имею в виду '0.' is' 0.0'. –