【问题标题】:How can this form of variable assignment work?这种形式的变量赋值如何工作?
【发布时间】:2017-02-18 22:48:16
【问题描述】:

这是一种什么样的变量赋值语法?请解释为什么这段代码会以它的方式工作以及如何?似乎在没有 = 运算符的情况下分配了变量。任何后续测试都显示pi_num 返回3.14。为什么?

  #define SPECIAL_NUMBER 3.14
  cout << "Special number is " << SPECIAL_NUMBER << endl;
  #define SPECIAL_VARIABLE pi_num
  float SPECIAL_VARIABLE = SPECIAL_NUMBER;
  cout << "Pi: " << pi_num << endl;

【问题讨论】:

标签: c++ syntax floating-point


【解决方案1】:

发生的事情是您使用宏掩盖了正在发生的事情。

请记住,预处理器会进行文本替换,并用扩展替换宏。在您的代码中,每次使用 SPECIAL_NUMBER 都将替换为 3.14,每次使用 SPECIAL_VARIABLE 都将替换为 pi_num,然后编译代码。

因此编译器将您的代码视为

cout << "Special number is " << 3.14 << endl;
float pi_num = 3.14;
cout << "Pi: " << pi_num << endl;

我将不再讨论 float pi_num = 3.14 是赋值还是初始化(OP 不太可能理解其中的区别)。

我假设您知道被称为 pi(希腊字母)的数学量仅约等于 3.14

【讨论】:

    【解决方案2】:

    预处理后的样子

    cout << "Special number is " << 3.14 << endl;
    float pi_num = 3.14;
    cout << "Pi: " << pi_num << endl;
    

    不涉及魔法。

    【讨论】:

      猜你喜欢
      • 2011-11-05
      • 2016-09-06
      • 2012-08-30
      • 2023-04-02
      • 2010-10-05
      • 2019-12-15
      • 2022-01-13
      • 1970-01-01
      相关资源
      最近更新 更多