----宏 与 符号常量----请高手指教一下。。本人菜鸟~~刚学。。谢谢
发布网友
发布时间:2022-05-07 05:21
我来回答
共2个回答
热心网友
时间:2023-10-16 18:41
我是这么认为的:
1.符号常量是最简单的宏。
2.符号常量是由编译器处理的,其只存在于源代码文件中,在编译时将被实际数字代替,所以它不占用内存。而变量会一直存在于生成的可执行文件(程序)中,在程序运行时将被分配内存,因为内存是可修改的,因此变量可以被赋值。
至于
#define A 10
第一块代码
#define A 20
第二块代码
这个情况属于“宏的重定义”,编译时会产生编译警告,其目的是告诉编译器,在第一块代码中,A用10替换,在第二块代码中,A用20替换。
这种用法只是用于告诉编译器A的某一值在源代码中的作用范围,编译器只会用最后定义的A来完成替换工作。这不属于“赋值”操作,因为A不是变量,而是属于“替换的变化”。赋值是在程序运行时才会进行的操作。
谨记:宏只存在于源文件中。
热心网友
时间:2023-10-16 18:42
符号常量:
#define == =
那么在if里面:
if (a = 1)就符合语法规则了。
宏,宏在某些方面像函数:
#define cube(x) ((x)*(x)*(x))
那么cube (3) 就得27了
这里,最好给x加上括号,以保证其运算顺序,否则写成如下:
#define cube(x) (x * x * x)
那么cube(3+2) 就被翻译成: 3+2*3+2*3+2,这显然不是我们想要的。
这里的常量不能再被赋值是指如下语句不合法:
A = 3;
你那样做虽然能够编译通过,但完全没有必要这么做,并且通常会引起编译器警告
热心网友
时间:2023-10-16 18:41
我是这么认为的:
1.符号常量是最简单的宏。
2.符号常量是由编译器处理的,其只存在于源代码文件中,在编译时将被实际数字代替,所以它不占用内存。而变量会一直存在于生成的可执行文件(程序)中,在程序运行时将被分配内存,因为内存是可修改的,因此变量可以被赋值。
至于
#define A 10
第一块代码
#define A 20
第二块代码
这个情况属于“宏的重定义”,编译时会产生编译警告,其目的是告诉编译器,在第一块代码中,A用10替换,在第二块代码中,A用20替换。
这种用法只是用于告诉编译器A的某一值在源代码中的作用范围,编译器只会用最后定义的A来完成替换工作。这不属于“赋值”操作,因为A不是变量,而是属于“替换的变化”。赋值是在程序运行时才会进行的操作。
谨记:宏只存在于源文件中。
热心网友
时间:2023-10-16 18:42
符号常量:
#define == =
那么在if里面:
if (a = 1)就符合语法规则了。
宏,宏在某些方面像函数:
#define cube(x) ((x)*(x)*(x))
那么cube (3) 就得27了
这里,最好给x加上括号,以保证其运算顺序,否则写成如下:
#define cube(x) (x * x * x)
那么cube(3+2) 就被翻译成: 3+2*3+2*3+2,这显然不是我们想要的。
这里的常量不能再被赋值是指如下语句不合法:
A = 3;
你那样做虽然能够编译通过,但完全没有必要这么做,并且通常会引起编译器警告