return static_cast <int> C ++和C </int>

时间:2013-12-13 05:58:04

标签: c++ c

我想了解C和C ++语言。

C ++使用:

return static_cast<int>

如何将return static_cast<int>转换为C?

例如:

  • C printf()
  • C ++ cout

1 个答案:

答案 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 ++工程师首选模板化转换机制。