最近,我对这两个表达式感到困惑 - (type)value
和type(value)
。
例如:size_t c = size_t(-1); size_t c = (size_t)-1;
有什么区别?
答案 0 :(得分:5)
前者是C ++,它通过调用构造函数来执行direct initialization。
第二个是C(或C ++),它正在进行演员表。
因此,与C程序员的观点存在很大差异。
此外,这是一个非常糟糕的主意,因为size_t
是无符号类型。这应该使用ssize_t
来完成,{{1}}已经过签名,无需播放。
答案 1 :(得分:2)
在C中,只有其中一个是有效的表达式。
在C ++中,它们完全相同,它们是编写显式强制转换表达式的两种替代形式:C风格和functional style。