【问题标题】:What's going under the hood in this simple C++ code?在这个简单的 C++ 代码中到底发生了什么?
【发布时间】:2015-10-20 21:55:00
【问题描述】:
#include<iostream>
int main()
{ 
    int a = 5;
    a = (a = 10, a++, a--);
    std::cout << a;

}

输出为 11, 但是当我修改线路时

a = a=10,a++,a--;

输出为 10 删除 ( ) 运算符有什么影响以及这些运算符的执行顺序是什么。

【问题讨论】:

  • @Rohit 使用编译器警告-Wall
  • 等等,什么?未定义的行为?逗号运算符引入了一个序列点@πάνταῥεῖ
  • 删除 () 运算符有什么影响以及运算符的执行顺序是什么随机的人寻求帮助?编写一些代码并自己找出答案。对于自我奖励点,检查编译器可以生成的汇编代码(如果你要求的话)并花一些时间来理解它。

标签: c++


【解决方案1】:

+ 和 - 运算符优先于赋值运算符,编译器从左到右读取 +,- 符号,而编译器从右到左读取赋值运算符。所以: 1) 一个++ 2) 一个—— 3) a=10 4) 一个 =

【讨论】:

    【解决方案2】:

    c++ 编译器会将您的完整集合代码传递给二叉树,该二叉树将根据运算符 = + - 等在左节点或右节点中的优先级重新排列您的代码

    【讨论】:

      猜你喜欢
      • 2012-08-29
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      • 2020-12-13
      • 2018-08-04
      • 1970-01-01
      • 2015-11-28
      • 2018-11-12
      相关资源
      最近更新 更多