两个(类型)值和类型(值)之间有什么区别?

时间:2013-01-24 10:45:33

标签: c++ c

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

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

有什么区别?

2 个答案:

答案 0 :(得分:5)

前者是C ++,它通过调用构造函数来执行direct initialization

第二个是C(或C ++),它正在进行演员表。

因此,与C程序员的观点存在很大差异。

此外,这是一个非常糟糕的主意,因为size_t是无符号类型。这应该使用ssize_t来完成,{{1}}已经过签名,无需播放。

答案 1 :(得分:2)

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

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