在C ++中将运算符'+'和'*'用于语句

时间:2019-11-15 08:45:33

标签: c++ operators unary-operator

在C ++中,当我运行此代码时:

void main()
{
  2;
  +
  3;
}

没有错误 但是当我运行这段代码时:

void main()
{
  2;
  *
  3;
}

存在此错误:

main.cpp:5:3: error: invalid type argument of unary ‘*’ (have ‘int’)
    5 |   3;
      |   ^

请有人解释一下,谢谢

2 个答案:

答案 0 :(得分:10)

无视2;,这是一个单独执行的语句。然后,如果我们删除空格,则会得到

+3;

这是一个有效的表达式。像-3;一样有效。 +33相同。您可以阅读有关一元加号here的信息:

  

+ expression

     

一元加号(促销)。

     

对于内置运算符,表达式必须   具有算术,无作用域枚举或指针类型。积分   如果操作数具有整数或无作用域,则对操作数执行提升   枚举类型并确定结果的类型。

另一方面,

*3没有意义。一元*不能应用于文字3

答案 1 :(得分:2)

由于C ++是自由样式语言。因此空间无关紧要。

在第一种情况下,它变为+3,这是一个有效的语句。 Read Here about +

但是在第二种情况下,它变为* 3,这是无效的,因为编译器认为您正在尝试取消引用无效的3