我想了解C和C ++语言。
C ++使用:
return static_cast<int>
如何将return static_cast<int>
转换为C?
例如:
printf()
cout
答案 0 :(得分:8)
C样式转换只是在值前面加上括号中的类型。而不是
static_cast<type>(value)
你只是做
(type)value
e.g。
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
并对两种语言使用一次调用
STATIC_CAST(int, x) // C++ static_cast<int>(x), C (int)(x)
对于简单的情况,C语言中围绕Value_的额外括号不是必需的,但是因为这是一个宏,如果你说
STATIC_CAST(int, 1.0 + 2.0)
你不希望它扩展到
(int)1.0 + 2.0
但希望它扩展到
(int)(1.0 + 2.0)
请注意,C ++允许使用C形式的转换,但C ++工程师首选模板化转换机制。