返回静态_cast<;int>;C++;和C 我想知道C语言和C++语言。

返回静态_cast<;int>;C++;和C 我想知道C语言和C++语言。,c++,c,C++,C,C++使用: return static_cast<int> returnstatic\u cast 如何将返回静态\u cast转换为C 例如: Cprintf() C++cout C样式转换只是在值前面加上括号中的类型。而不是 static_cast<type>(value) e、 g 或者你也可以 #ifdef __cplusplus #define STATIC_CAST(Type_, Value_) static_cast<Type_>

C++使用:

return static_cast<int>
returnstatic\u cast
如何将
返回静态\u cast
转换为C

例如:

  • C
    printf()
  • C++
    cout

C样式转换只是在值前面加上括号中的类型。而不是

static_cast<type>(value)
e、 g

或者你也可以

#ifdef __cplusplus
    #define STATIC_CAST(Type_, Value_) static_cast<Type_>(Value_)
#else
    #define STATIC_CAST(Type_, Value_) (Type_)(Value_)
#endif
你不希望它扩展到

(int)1.0 + 2.0
(int)(1.0 + 2.0)
但我想把它扩展到

(int)1.0 + 2.0
(int)(1.0 + 2.0)

<>注意C++允许C的形式,但是模板化的铸造机制是C++工程师的首选。

C风格的铸造只是用括号中的类型预先填充值。而不是

static_cast<type>(value)
e、 g

或者你也可以

#ifdef __cplusplus
    #define STATIC_CAST(Type_, Value_) static_cast<Type_>(Value_)
#else
    #define STATIC_CAST(Type_, Value_) (Type_)(Value_)
#endif
你不希望它扩展到

(int)1.0 + 2.0
(int)(1.0 + 2.0)
但我想把它扩展到

(int)1.0 + 2.0
(int)(1.0 + 2.0)

请注意C++的C型,但模板化的CAST机制是C++工程师的首选。

STATICE-CAST(X)->(类型*)X你的英语很好,但是请看预览,点击<代码> {} /Cuff>格式化按钮,这样你的帖子就不会乱码。C中难以转换的是<代码>动态转换(SMOVEAR)static\u cast(x)->(type*)x您的英语很好,但是请查看预览并单击
{}
格式按钮,这样您的帖子就不会乱码。在C中很难转换的是
dynamic\u cast(somevar)
NB:C允许您将几乎任何内容转换为任何其他内容。“除了完全没有意义的事情外,没有安全机制。”Potatosatter错了。在C中,您只能强制转换基本类型、指针和
enum
,而不能转换其他类型。@JensGustedt除了该列表之外,剩下的类型只有数组、结构、联合和
void
。也可以选择原子和复数,我想它们可能是铸造的。您可以从数组强制转换为指针,也可以从任何对象强制转换为
void
。其余的案例是不允许的,因为它们没有概念基础,也就是说毫无意义。@Potatoswatter,对我来说,这听起来只是无缘无故的抨击。没错,C++同样适用,如果你在C++中做相应的转换,也没有安全机制。这就是演员阵容的本质。事实上,在C++中,你可以投更多(细粒度机制),尤其是在 Stutt或类< /C>,因此这里所说的宏比C++更危险。那么,这样一句话的意义是什么呢?C型铸造的晶粒度更小,更为粗犷,这在很大程度上并不是一个维护难题;C++样式使您更具体,更可能导致编译错误/警告,如果您“打破”PARAMTE/VAR链的类型/属性。例如,C casting将允许您执行
const char*p=“hello”;int n=(int)p其中我们从数值类型更改为指针类型并丢弃常量。C++的转换将要求您显式移除const并显式地使指针指向数值转换。vs NB:C允许您将几乎任何内容转换为任何其他内容。“除了完全没有意义的事情外,没有安全机制。”Potatosatter错了。在C中,您只能强制转换基本类型、指针和
enum
,而不能转换其他类型。@JensGustedt除了该列表之外,剩下的类型只有数组、结构、联合和
void
。也可以选择原子和复数,我想它们可能是铸造的。您可以从数组强制转换为指针,也可以从任何对象强制转换为
void
。其余的案例是不允许的,因为它们没有概念基础,也就是说毫无意义。@Potatoswatter,对我来说,这听起来只是无缘无故的抨击。没错,C++同样适用,如果你在C++中做相应的转换,也没有安全机制。这就是演员阵容的本质。事实上,在C++中,你可以投更多(细粒度机制),尤其是在 Stutt或类< /C>,因此这里所说的宏比C++更危险。那么,这样一句话的意义是什么呢?C型铸造的晶粒度更小,更为粗犷,这在很大程度上并不是一个维护难题;C++样式使您更具体,更可能导致编译错误/警告,如果您“打破”PARAMTE/VAR链的类型/属性。例如,C casting将允许您执行
const char*p=“hello”;int n=(int)p其中我们从数值类型更改为指针类型并丢弃常量。C++的转换将要求您显式移除const并显式地使指针指向数值转换。vs