C關於typeid語句無法正常輸出的問題

2021-08-26 05:05:40 字數 1232 閱讀 5593

1樓:匿名使用者

在c++裡怎麼能知道一個變數的具體型別,

答:1。執行時獲知變數型別名稱,可以使用 typeid(變數).

name,需要注意不是所有編譯器都輸出"int"、"float"等之類的名稱,對於這類的編譯器可以這樣使用:float f = 1.1f; if( typeid(f) == typeid(0.

0f) ) ……

2。對於多型類例項,想得到實際的類名稱,需要使用到rtti,這需要在編譯的時候加上引數"/gr"。

3。對於普通變數,既然是自己寫的,那當然也就應該知道它的型別,其實用不著執行時獲知;對於多型類例項,既然需要執行時獲知實際型別,那麼就說明這裡不具有多型性,既然沒有多型性就不應該抽象它,這屬於設計錯誤,總之,我認為rtti是多餘的。

4。對於多型類例項,使用 typeid(value) == typeid(value)來判斷,不如使用 dynamic_cast 來判斷,它們的原理是一樣的。

2樓:匿名使用者

typeid(test).name() is int [80]typeid(test[0]).name() is inttypeid(myclass a).

name() is class myclass

typeid(myclass2b).name() is class myclass2

typeid(int i).name() is int請按任意鍵繼續. . .

【c、c++】關於型別轉換和typeid的問題

3樓:匿名使用者

const std::type_info &info = typeid( double_type_var);

char*type= info.name();

if(strcmp(type,"double"))型別不確定用dynamic_cast

object_of_target_type* ptr = dynamic_cast(pointer_expression);

4樓:匿名使用者

typeid是執行時型別識別,獲取的型別是無法進行轉化的...

c++迴圈語句輸出問題

5樓:白軒

差書,慢慢摸索,不著急,慢慢來

6樓:安遠城主

把 for 迴圈裡的 break; 行註釋掉

關於c 語句auto midreturn v beginv size2是什麼意思在這裡的作用是什麼

這是c 11的lambda表示式,用來定義匿名函式。在這 中,auto mid 等價於定義了函式mid,其引數個數為0個,表示直接引用外部變數,函式體是 return v.begin v.size 2 具體詳見c lambda表示式 c語言和c 語言的區別是什麼?c語言與c 的區別有很多 1,全新的...

關於C語言的一道題迴圈語句,C語言迴圈語句裡的一道例題

a.for x i 因為沒有判斷語句,所以就沒有真假判斷,程式就一直迴圈下去咯。b.while 1 因為括弧裡面是1,在邏輯上說就是真,所以迴圈也會繼續。c.for i 10 i sum i 和a一樣,沒有判斷語句。答案是d就不用說了吧。a c缺少終止條件語句,當然死迴圈 b,while 1 1表示...

c語言有定義語句,C語言 有定義語句char a int b float c double d

首先,在c中,資料之間的運算必須是同型別的才能進行運算。如果型別不一致,就必須先轉換成相同的型別 由低級別 高階別轉換。資料型別級別由低到高分別為 char int float double。轉換時由低級別向高階別轉換。本題中,資料型別分別為 char型 int型 float型和double型。按照...