2010-12-14 70 views
2

我很清楚00.0(int和double)之间的区别。C++:0和0.0之间的差异?

但是0.0.0(请注意)有什么区别吗?

非常感谢提前,

阿克塞尔

+0

没有语义差异(好吧,你的源代码中有一个额外字节的差异:p)。但是,与此稍有关系,在+0.0和-0.0之间是有区别的。玩的开心! – 2010-12-14 16:55:28

回答

6

没有区别。这两种文字都是双重的。从C++ - 语法:

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

参见:Hyperlinked C++ BNF Grammar

+0

真的吗?真奇怪。 Howcome cout << typeid(0).name()<<“”<< typeid(0.0).name(); 打印“我是”? – 2010-12-14 09:58:56

+5

'typeid(0)'< - 这是一个* int *。看'。'在第三条代码行的末尾。 – 2010-12-14 10:00:25

+0

错过了。谢谢。 – 2010-12-14 10:56:42

1

没有,没有。

+0

是的。类型cout << typeid(0).name()<<“”<< typeid(0.0).name(); (删除了downvote,如果我是对的,我会晚点退出) – 2010-12-14 09:58:23

+3

'typeid(0).name()'使用了一个int - 注意缺少一个尾随小数位。尝试'cout << typeid(0。)。name()<<“”<< typeid(0.0).name();'你会看到它们是一样的。 – AgentConundrum 2010-12-14 10:06:44

1

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

-2

0是int类型的,但可以被铸造加倍和0.0是类型的双但可被铸造为int。
两种类型都是隐含的。

+0

这个问题明确询问'0。它甚至说“注意”。 – 2010-12-14 10:00:32

+0

错过了。谢谢。 – 2010-12-14 10:55:50

1

仅将.作为数字的一部分将其标识为浮点类型。

此:

cout << (5/2) << endl; 
cout << (5./2) << endl; 
cout << (5.0/2) << endl; 

打印此:

2 
2.5 
2.5 

你可以看到,第一行使用整数除法(因为这两个值是整数),而5.5.0都得到认定为浮动点类型,因此它们触发“正常分割”。