宏观价值如何变化

Posted

技术标签:

【中文标题】宏观价值如何变化【英文标题】:How is value of macro getting change 【发布时间】:2021-09-12 22:56:52 【问题描述】:
#include <stdio.h>
int main()

    int var;
    printf("write the value of var:\n");
    scanf("%d", &var);
#define NUM var

    printf("The value of S is %d\n", NUM);
    var = var + 1; //changing the value of variable 'var'
    printf("New value of S is %d", NUM);
return 0;

结果如下……

write the value of var:
10
The value of S is 10
New value of S is 11
[Program finished]

在这个程序中,一旦用户输入变量“var”的值,我想将其设为常量。所以,我定义了一个带有宏模板'NUM'和宏扩展'var'的宏。 但是,当我在执行时更改“var”的值时,“NUM”的值也会更改。不知道怎么样? 其实我不知道我们可以在宏扩展中使用任何变量吗?

【问题讨论】:

宏不是变量——它只是编译时的纯文本替换。你的printf("...", NUM); 与你写的printf("...", var); 完全相同。如果要保存在运行时设置的变量的结果,请将其值分配给另一个变量 预处理器提前运行:在实际编译开始之前,因此在程序运行之前很久。在您的代码中,宏将 NUM 替换为 var(就像您在 IDE 中手动进行更改一样)。 const int NUM = var; @HolyBlackcat: 意思是在程序执行之前,NUM被var替换,如果我们改变var,那么NUM就会发生变化。意味着它变成了一个简单的变量 它甚至不是一个变量。在编译程序之前,单词NUM 被单词var 替换为文本。 【参考方案1】:

预处理是在实际的 C 代码编译之前完成的。它只是在文本上将标记 NUM 替换为标记 var

所以在预处理之后你的函数是:

int main()

    int var;
    printf("write the value of var:\n");
    scanf("%d", &var);

    printf("The value of S is %d\n", var);
    var = var + 1; //changing the value of variable 'var'
    printf("New value of S is %d", var);
return 0;

这个main 函数正在编译中。如您所见,NUM 已替换为 var,结果很明显。

【讨论】:

谢谢。明白了。

以上是关于宏观价值如何变化的主要内容,如果未能解决你的问题,请参考以下文章

产品之用户研究

R语言使用econocharts包创建微观经济或宏观经济图ptvalue函数可视化前景理论价值函数(Prospect theory value function)

产品经理用户研究

如何触发价值变化的功能?

用户研究(上)

R语言使用econocharts包创建微观经济或宏观经济图:需求曲线供给曲线供需曲线无差异曲线Laffer曲线前景理论价值函数曲线税收图生产可能性边界线劳动力供给曲线计算曲线交叉点等