我已经读过,当每次调用函数时不希望变量值改变/初始化时,静态变量在函数内部使用.但是如何在"main"之前在主程序中定义变量static,例如
#include <stdio.h>
static double m = 30000;
int main(void)
{
value = m * 2 + 3;
}
Run Code Online (Sandbox Code Playgroud)
这里变量m具有一个常量值,以后不会在主程序中修改.在同样的思路中,它有什么不同,而不是使用静态定义:
const double m = 30000;
Run Code Online (Sandbox Code Playgroud)
要么
#define m 30000 //m or M
Run Code Online (Sandbox Code Playgroud)
然后确保在主代码中使用双重操作,以便将m转换为正确的数据类型.
如果我将宏定义为#define LOGIC_ONE 1并且想要LOGIC_ONE在case语句中使用,那么会LOGIC_ONE考虑哪种类型?
它被认为是int因为我为价值1定义它吗?
我搜索了SO,但没有找到这个具体问题的答案.请原谅我已经回答了.
如果您有以下内容:
#define MACRO 40
Run Code Online (Sandbox Code Playgroud)
您不将它分配给在循环中使用它的变量:
for(int i = 0; i < MACRO; i++) {...
Run Code Online (Sandbox Code Playgroud)
然后,每个处理器创建:
for(int i = 0; i < 40; i++) {...
Run Code Online (Sandbox Code Playgroud)
然后编译器会将它隐式地转换为int,因为比较是使用类型int i吗?我看过这个问题#define变量的类型,而Edgar Bonet的一些答案暗示了编译器选择如何处理宏的顺序?
这个问题,C++如何隐式地将参数转换为比较器,如<?,也有人建议,但只描述了隐式转换如何与两种类型进行比较.由于宏实际上没有类型,我不确定这是否适用.