Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 100是多少。合法的_C - Fatal编程技术网

C 100是多少。合法的

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; 所有这些都是合法的,并

我看到了一个用C编写的日历程序,它只是说
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:)