在C ++中,当我运行此代码时:
void main()
{
2;
+
3;
}
没有错误 但是当我运行这段代码时:
void main()
{
2;
*
3;
}
存在此错误:
main.cpp:5:3: error: invalid type argument of unary ‘*’ (have ‘int’)
5 | 3;
| ^
请有人解释一下,谢谢
答案 0 :(得分:10)
无视2;
,这是一个单独执行的语句。然后,如果我们删除空格,则会得到
+3;
这是一个有效的表达式。像-3;
一样有效。 +3
与3
相同。您可以阅读有关一元加号here的信息:
另一方面,
+ expression
一元加号(促销)。
对于内置运算符,表达式必须 具有算术,无作用域枚举或指针类型。积分 如果操作数具有整数或无作用域,则对操作数执行提升 枚举类型并确定结果的类型。
*3
没有意义。一元*
不能应用于文字3
。
答案 1 :(得分:2)
由于C ++是自由样式语言。因此空间无关紧要。
在第一种情况下,它变为+3,这是一个有效的语句。 Read Here about +
但是在第二种情况下,它变为* 3,这是无效的,因为编译器认为您正在尝试取消引用无效的3
。