(int) + 4*5;

为什么这(adding a type with a value)是可能的?(try 使用g++和GCC.)

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

推荐答案

这里的+unary + operator,不是binary addition operator.这里没有添加任何内容.

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

你可以把这句话重读为

(int) (+ 4) * 5;    

它被解析为

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

上面写着,

  1. 对整型常量值4应用一元+运算符.
  2. 打字到int
  3. 与操作数5相乘

这类似于(int) (- 4) * (5);,其中一元运算符的用法更为常见.

在你的例子中,一元+和转换为int都是多余的.

C++相关问答推荐

为什么复合文字(C99)的返回会生成更多的汇编代码?

堆栈帧和值指针

在C中将通用字符名称转换为UTF-8

在C++中通过空指针隐式访问常量变量的值

双指针指向常量双指针的指针类型赋值不兼容

对于C中给定数组中的每个查询,如何正确编码以输出给定索引范围(1到N)中所有数字的总和?

防止C++中递归函数使用堆栈内存

FRIDA-服务器成为端口扫描的目标?

在C中访问数组中的特定值

指向不同类型的指针是否与公共初始序列规则匹配?

如何确保我将使用C标准库函数的函数版本,如&getc";,而不是类似函数的宏版本?

链表删除 node 错误

合并对 struct 数组进行排序

如何摆脱-WIMPLICIT-Function-声明

为什么我的半数组测试和奇数组测试不起作用?(我使用Assert进行调试)

在C中定义函数指针?

C23 中是否有 __attribute__((nonnull)) 的等效项?

设置具有非零终止字符串的大整数

React Native Android C++ TurboModules 静态 C 库链接问题

K&R 练习 1-24