理解 C 中 (type)value 和 type(value) 的细微差别
在 C 中,显式类型转换存在两种不同的语法:(类型)值和类型(值)。这种区别提出了一个问题:这两个表达式之间有什么区别(如果有的话)?
简单转换没有区别
根据 C 标准(第 5.2 节) .3),当简单类型说明符后跟括在括号中的单个表达式时,结果表达式根据给定创建指定类型的值表达式。
(type)value 和 type(value) 的等价
对于单个表达式,(type)value 在两个定义中等同于 type(value)和意义。这意味着将单个值转换为指定类型时,这两个表达式绝对没有区别。
多个值的差异
但是,出现了细微的差异当转换以逗号分隔的值列表时。在这种情况下,如果指定的类型是具有适当声明的构造函数的类,则 type(x1, x2, ...) 相当于使用给定值创建 T 类型的临时变量 t 并将 t 的值赋给表达式。
类型名称限制
作为附加说明,有些类型名称不能使用 type(value) 语法被使用。例如,虽然 (char )string 有效,但 char (string) 将编译失败。但是,如果使用 typedef 对类型进行别名,则可以将 type(value) 语法与别名一起使用。
以上是C 转换中 (type)value 和 type(value) 之间有什么区别(如果有)?的详细内容。更多信息请关注PHP中文网其他相关文章!