这种形式的变量赋值如何工作?

时间:2017-02-18 22:48:17

标签: c++ syntax floating-point

这是什么类型的变量赋值语法?请解释为什么这段代码的工作方式和如何?看来变量是在没有=运算符的情况下分配的。任何后续测试都会显示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;

2 个答案:

答案 0 :(得分:1)

预处理后,这看起来像

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

没有魔法。

答案 1 :(得分:1)

发生的事情是你掩盖了使用宏的情况。

请记住,预处理器会进行文本替换,并将宏替换为扩展。在您的代码中,/Users/user/Documents/Apache\\ Flex/bin/mxmlc -o ${file_base_name}.swf ${file} # but tried also this /Users/user/Documents/Apache\\ Flex/bin/amxmlc -o ${file_base_name}.swf ${file} 的每次使用都将被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; 是作业还是初始化(OP不太可能理解这种区别)。

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