首页 > 解决方案 > 为什么 C 和 C++ 允许表达式 (int) + 4*5?

问题描述

(int) + 4*5;

为什么这(添加具有值的类型)是可能的?(尝试使用 g++ 和 gcc。)

我知道这没有意义(也没有效果),但我想知道为什么这是可能的。

标签: c++ccastinglanguage-lawyer

解决方案


这里+一元运算+,而不是二元加法运算符。这里没有添加。

此外,该语法(int)用于类型转换。

您可以将该声明重新阅读为

(int) (+ 4) * 5;    

被解析为

((int) (+ 4)) * (5);    

它说,

  1. +对整数常量值应用一元运算符4
  2. 类型转换为int
  3. 与操作数相乘5

这类似于(int) (- 4) * (5);,其中一元运算符的用法更熟悉。

在您的情况下,一元+和强制转换int- 都是多余的。


推荐阅读