相关疑难解决方法(0)

C中的Static,define和const

我已经读过,当每次调用函数时不希望变量值改变/初始化时,静态变量在函数内部使用.但是如何在"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转换为正确的数据类型.

c static const c-preprocessor

19
推荐指数
4
解决办法
2万
查看次数

什么类型的宏被考虑?

如果我将宏定义为#define LOGIC_ONE 1并且想要LOGIC_ONE在case语句中使用,那么会LOGIC_ONE考虑哪种类型?

它被认为是int因为我为价值1定义它吗?

c++ macros

9
推荐指数
4
解决办法
799
查看次数

C宏是否隐式投射?

我搜索了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++如何隐式地将参数转换为比较器,如<?,也有人建议,但只描述了隐式转换如何与两种类型进行比较.由于宏实际上没有类型,我不确定这是否适用.

c c++ macros types c-preprocessor

6
推荐指数
3
解决办法
2936
查看次数

标签 统计

c ×2

c++ ×2

c-preprocessor ×2

macros ×2

const ×1

static ×1

types ×1