C++ C++;:0之间的差异。和0.0?

C++ C++;:0之间的差异。和0.0?,c++,c,grammar,double-precision,C++,C,Grammar,Double Precision,我很清楚0和0.0(int和double)之间的区别 但是0.和0.0之间有什么区别吗?(请注意。) 提前多谢了 阿克塞尔不,没有。不。据我所知,你也可以写.0。没有区别。两个字面值都是双精度的。从C++语法: fractional-constant: digit-sequenceopt . digit-sequence digit-sequence . 请参阅:0类型为int,但可以转换为double;0.0类型为double,但可以转换为int。 这两种类型转换都是隐式的。

我很清楚
0
0.0
(int和double)之间的区别

但是
0.
0.0
之间有什么区别吗?(请注意。)

提前多谢了


阿克塞尔

不,没有。

不。据我所知,你也可以写.0。

没有区别。两个字面值都是双精度的。从C++语法:

fractional-constant:
    digit-sequenceopt . digit-sequence
    digit-sequence .

请参阅:

0
类型为int,但可以转换为double;
0.0
类型为double,但可以转换为int。

这两种类型转换都是隐式的。

只要将
作为数字的一部分,就可以将其标识为浮点类型

这:


您可以看到,第一行使用整数除法(因为两个值都是整数),而
5.
5.0
都被标识为浮点类型,因此它们触发“正常除法”。

是的。Type cout
typeid(0)。name()
正在使用int-请注意,后面没有小数点。试试
真的不行吗?真奇怪。Howcome cout
typeid(0)
这个问题明确地询问了
0.
;它甚至说“注意”。没有语义上的区别(好吧,在源代码中有一个额外字节的区别:p)。但是,与此稍微相关的是,+0.0和-0.0之间存在差异。玩得高兴
 cout << (5 / 2) << endl;
 cout << (5. / 2) << endl;
 cout << (5.0 / 2) << endl;
 2
 2.5
 2.5