2

最近,我对这两个表达式感到困惑 -(type)valuetype(value).

例如 : size_t c = size_t(-1); size_t c = (size_t)-1;

有什么不同?

4

2 回答 2

5

前者是C++,它通过调用构造函数进行直接初始化。

第二个是C(或C++),它正在做一个演员。

因此,从 C 程序员的角度来看,存在很大差异。

此外,这是一个非常糟糕的主意,因为size_t它是无符号类型。这应该使用 来完成ssize_t,它已签名并消除了对演员表的需要。

于 2013-01-24T10:47:41.863 回答
2

在 C 中,只有其中一个是有效的表达式。

在 C++ 中,它们完全相同,它们是编写显式强制转换表达式的两种替代形式:C 风格和函数风格

于 2013-01-24T16:07:24.203 回答