2010-12-14 103 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都得到認定爲浮動點類型,因此它們觸發「正常分割」。