Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 两个(类型)值和类型(值)之间有什么区别?_C++_C - Fatal编程技术网

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

C++ 两个(类型)值和类型(值)之间有什么区别?,c++,c,C++,C,最近,我对这两个表达式感到困惑-(type)value和type(value) 例如:size\u t c=size\u t(-1);尺寸_UT c=(尺寸_UT)-1 有什么区别 > P >前者是C++,它是通过调用构造函数来实现的。 第二个是C(或C++),它正在进行转换 所以,从C程序员的角度来看,有很多不同之处 而且,这是一个非常糟糕的主意,因为size\u t是一种无符号类型。这应该使用ssize\t来完成,它是有符号的,不需要强制转换。在C中,只有一个是有效的表达式 在C++中,它们

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

例如:
size\u t c=size\u t(-1);尺寸_UT c=(尺寸_UT)-1


有什么区别

> P >前者是C++,它是通过调用构造函数来实现的。 第二个是C(或C++),它正在进行转换

所以,从C程序员的角度来看,有很多不同之处


而且,这是一个非常糟糕的主意,因为
size\u t
是一种无符号类型。这应该使用
ssize\t
来完成,它是有符号的,不需要强制转换。

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

<>在C++中,它们是完全相同的,它们是两种可供选择的显式表达式的形式:C样式和.< /p>代码>类型(值)<代码>无效。C—1“它正在进行直接初始化”;不,不是,这仍然是一个副本初始化。直接初始化是例如
size\u t x(-1)
。此外, SsiZeZt不是标准的C或C++类型,它是POSIX类型。在32位及更高的系统上,与
size\u t
相对应的有符号类型(实际上)是
ptrdiff\u t
。无论如何,这就是推荐Posix特定类型的类型。第三,两者都是强制转换,C++符号转换的效果被定义为等价于C符号转换。