我想知道C和C++語言。return static_cast <int> C++和C
C++使用:
return static_cast<int>
我怎樣才能變換return static_cast<int>
到C?
例如:
- Ç
printf()
- C++
cout
我想知道C和C++語言。return static_cast <int> C++和C
C++使用:
return static_cast<int>
我怎樣才能變換return static_cast<int>
到C?
例如:
printf()
cout
空調風格鑄造簡單地用前綴括號中的類型的值。取而代之的
static_cast<type>(value)
你根本
(type)value
例如
static_cast<int>(x)
成爲
(int)x
或者你可以做
#ifdef __cplusplus
#define STATIC_CAST(Type_, Value_) static_cast<Type_>(Value_)
#else
#define STATIC_CAST(Type_, Value_) (Type_)(Value_)
#endif
,並在周圍VALUE_ C版本使用一個調用兩種語言
STATIC_CAST(int, x) // C++ static_cast<int>(x), C (int)(x)
額外的括號不需要d簡單的案件,但在那裏,因爲這是一個宏,如果你說
STATIC_CAST(int, 1.0 + 2.0)
你不希望它擴展到
(int)1.0 + 2.0
,但希望它擴大到
(int)(1.0 + 2.0)
請注意,C++允許C形式的鑄造,但模板化的轉換機制是C++工程師的首選。
注意:C允許您將任何東西轉換爲其他任何東西。沒有安全機制,除了完全沒有意義的事情。 – Potatoswatter
@Patatoswatter,錯了。在C中,只能*轉換基本類型,指針和'enum',沒有別的。 –
@JensGustedt除了這個列表之外,其餘的類型還有數組,結構體,聯合體和'void'。可選地,還有原子和複數,我猜想可能是鑄造的。你可以從數組轉換爲指針,或者從任何東西轉換爲'void'。其餘的情況是不允許的,因爲它們沒有概念基礎,即沒有意義。 – Potatoswatter
的static_cast(X) - >(類型*)× –
gukoff
你的英語很好,但請看看預覽,點擊'{}'格式按鈕,您的文章是不是亂碼。 – Potatoswatter
在C中難以轉換的是''dynamic_cast(somevar)' –