澄清 (type)value 和 type(value) 之间的区别
在 C 中,表达式 (type)value 和 type(value) )可能看起来可以互换,但有一个微妙的差异需要考虑。具体来说,运算符 (type) 可用于将值转换为指定类型,而 type(value) 仅当提供值列表时才相当于构造函数调用。
根据 C 标准,简单类型说明符(类型)后跟带括号的表达式列表,根据给定的表达式列表创建指定类型的值。如果只有一个表达式,则 (type)value 和 type(value) 都充当强制转换表达式。
但是,表达式中以逗号分隔的值列表引入了区别。在这种情况下,type(value) 等同于构造函数调用。隐式声明临时变量,并且表达式使用提供的值有效地初始化该变量。结果是临时变量的右值。
虽然大多数类型可以在 (type)value 和 type(value) 形式中互换使用,但某些类型名称可能不适用于后一种语法。例如,在 type(value) 中使用类型名称 char * 将导致编译错误,而 (type)value 则可以正常工作。在这种情况下,使用 typedef 定义替代类型名称可以允许使用 type(value) 语法。
以上是C 中的'(type)value”何时与'type(value)”不同?的详细内容。更多信息请关注PHP中文网其他相关文章!