C 100是多少。合法的
我看到了一个用C编写的日历程序,它只是说C 100是多少。合法的,c,C,我看到了一个用C编写的日历程序,它只是说100.而不是100.00。程序编译时没有任何问题 我的问题是这怎么合法。C编译器不应该抱怨后面没有小数吗 提前感谢您的回答 这是一个合法有效的C程序。这是一个双倍的,因为当你把“.”放进去时,你的100变成了编译器的双倍。你也看到100。但编译器理解100.00不,对于双精度(和浮点)文本值,C编译器不需要任何小数 double d = 100.; double d = 100.0; double d = 100.000000; 所有这些都是合法的,并
100.
而不是100.00
。程序编译时没有任何问题
我的问题是这怎么合法。C编译器不应该抱怨
后面没有小数吗
提前感谢您的回答 这是一个合法有效的C程序。这是一个双倍的,因为当你把“.”放进去时,你的100变成了编译器的双倍。你也看到100。但编译器理解100.00不,对于双精度(和浮点)文本值,C编译器不需要任何小数
double d = 100.;
double d = 100.0;
double d = 100.000000;
所有这些都是合法的,并且表示100的值与双精度值相同,因为语言标准第6.4.4.2节“浮动常量”对其进行了如下定义:
floating-constant:
decimal-floating-constant
hexadecimal-floating-constant
decimal-floating-constant:
fractional-constant exponent-part(opt) floating-suffix(opt)
digit-sequence exponent-part floating-suffix(opt)
hexadecimal-floating-constant:
hexadecimal-prefix hexadecimal-fractional-constant
binary-exponent-part floating-suffixopt
hexadecimal-prefix hexadecimal-digit-sequence
binary-exponent-part floating-suffix(opt)
fractional-constant:
digit-sequence(opt) . digit-sequence
digit-sequence .
exponent-part:
e sign(opt) digit-sequence
E sign(opt) digit-sequence
sign: one of
+ -
digit-sequence:
digit
digit-sequence digit
hexadecimal-fractional-constant:
hexadecimal-digit-sequence(opt) .
hexadecimal-digit-sequence
hexadecimal-digit-sequence .
binary-exponent-part:
p sign(opt) digit-sequence
P sign(opt) digit-sequence
hexadecimal-digit-sequence:
hexadecimal-digit
hexadecimal-digit-sequence hexadecimal-digit
floating-suffix: one of
f l F L
底线是,以下所有都是有效的浮点文本,表示“零”:
0
.0
0.0
(您的“100.”将是有效的
浮动常量
,因为它是由分数常量
组成的十进制浮动常量
(省略可选的指数部分
和浮动后缀
);它是一个数字序列
后跟一个句点,对于分数常数
是有效的,就像该注释定义的第二行一样。)为什么不呢?(特别是,为什么您希望需要00
而不是0
?)不要忘记double d=.0代码>:)