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

時間 2021-08-30 10:38:45

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樓:匿名使用者

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語言for的語法,c語言中for語句是怎麼用的

i 1表示把i的值設為1,i 表示i自加1即i i 1 i 5應該是for的判斷表示式吧 for i 1 i 5 i 的意思是把i初值設為1,這個設初值在整個for迴圈只會執行一次,每次執行前都會判斷i 5是否成立,如果成立就執行語句,然後i 就是i自加1,不成立則跳出迴圈。然後判斷i 5是否成立 ...

C語言break語句出錯的問題,關於C語言中break語句的問題

竹竹風子 break必須在迴圈內使用,從你貼出來的 來看,應該呼叫exit退出 上面的printf裡面標識了 好吧,俺這個回答是存在一定問題的。沒細看,慚愧 把while 1 對應的反大括號打到break 下面那個反大括號後面.while 1 while的反大括號打到這裡. 抹不去那縷光 你直接把b...

關於c語言開關語句的幾個小問題

第一題的case a printf c a 和第二題的 case 0 case 1 printf d,n 後都要加break switch選擇語句,除了最後一個分支不加break之外,一般其他的都要加。像你的那種狀況,肯定要在後面加break。就像你說的,你加的話,你輸入a會顯示ab,那是因為條件對...