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

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

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語句的問題

這兩個程式是不同的,for語句在不加大括號情況下只迴圈到之後的一個分號,即前一個程式迴圈體包括printf 輸出為1234 後者迴圈體中不包括printf 執行完for語句後,再執行printf 輸出為5。第一個for迴圈的迴圈體內有一條語句,那就是printf,每次迴圈都要執行一次迴圈體內的語句,...

C 的for迴圈語句問題求解,關於C C ,for迴圈中的變數問題

這個 題簡單的考了下 變數名 和 變數名這個概念 變數名 是執行完 1 變數名 執行前 1 迴圈開始執行第一次,i 0,x 10,10 8 列印x 10 y 10,執行x 這個時候,x 就等於9了,然後y 被賦值為 i y 1 for 迴圈開始了第二次,此時 i 1,x 9,9 8,列印x 9,y ...

C連線資料庫查詢語句 關於使用變數

先申明變數string name sql語句string sql select from table name where coum name name 類同string sql format.tostring select from table name where coum name name ...