回顾C,我想知道:
宏和常量之间有什么区别,如果一般来说每个宏的目的是创建一个永不改变的值?
使用 const 的示例:
#include <stdio.h>
void main()
{
const int height = 100; /*constante de tipo entera*/
const float number = 3.14; /*constante de tipo real*/
const char letter = 'A'; /*constante de tipo caracter*/
const char letter_sequence[10] = "ABC"; /*constante de tipo cadena*/
const char backslash_char = '\?'; /*contante de caracter especial*/
printf("Valor de la altura :%d \n", height );
printf("valor del número : %f \n", number );
printf("valor de la letra : %c \n", letter );
printf("Valor de la secuencia de letras : %s \n", letter_sequence);
printf("Valor del caracter de barra invertida : %c \n", backslash_char);
}
宏的使用示例:
#include<stdio.h>
#define PI 3.1416//Macro
int main(){
int x = 10:
suma = PI + x;
printf("la suma es %.2f",suma);
return 0;
}
宏是由预处理器处理的指令……宏最终会生成合法的 C 代码,这是编译器最终会收到的。
也就是说,对于以下示例:
编译器会得到以下信息:
另一方面,常量是
变量元素,无法看到其值被修改。也就是说,对于以下示例:编译器必须将 的值传递
constante
给函数printf
。只有当编译器引入一些允许消除此中间步骤的优化时,这两个调用才能相似。