2012-02-10 25 views
0

我正在研究一個程序並且有一個奇怪的與cout相關的問題。由於該程序有點大,代碼說話最好,我會粘貼相關的代碼片段。cout的輸出根據類型轉換的方式而改變

首先,我有一個迭代,*it在限定如

for(vector<facet*>::iterator it=facets_to_dump->begin(); it<facets_to_dump->end(); it++)

在此,用於如果我使用表達式

facet* facet_to_work_on = *it; 
cout << facet_to_work_on->facet_id << "\t"; 

奈斯利打印出整數。

但是,如果我使用符號

cout << (facet*)(*it)->facet_id << "\t"; 

這段代碼打印出的十六進制值。十六進制值等於整數值。任何想法爲什麼發生這種情況?

在此先感謝。

回答

1

原因

cout << (facet*)(*it)->facet_id << "\t"; 

打印出一個十六進制值是 - >結合比(小面*)鑄造困難,也就是它的計算結果

(*it)->facet_id 

並將結果轉換到一個小面*。指針以十六進制輸出。

+0

啊,是的,這是有道理的。非常感謝! – bayindirh 2012-02-10 21:26:54

-1

嘗試包括<iomanip>和:

cout << dec << (facet*)(*it)->facet_id << "\t"; 

如果說你想在小數形式的數字。

+0

不幸的是,輸出仍然是十六進制。 – bayindirh 2012-02-10 21:23:53

相關問題