#include
int main(){
113;
5;
'l';
"ly";
return 0;
}
这些都属于普通常量,存在,但是没有什么意义,就如同你人生中碰到的许多人,他们都存在,但无法对你生活造成任何影响。
#include
int main(){
const int n=113;
n=5;
printf("n=%d\n",n);
}
由const修饰的常变量无法在后续更改修饰的值,我们在const下面定义了一个n=5之后,程序会报错,因为这个时候n的值已经被锁定为113了,所以我们后续不能再对n的值进行更改了。
那么为什么说由const修饰的是常变量而不是常量呢
#include
int main(){
int sum[5] = {0};
const int n=5;
int s[n] = {0};
return 0;
}
在这个程序中,在s[n]这一行程序会报错,我们在定义数组s[ ]的时候,[ ]中的必须要是常量,而不能是变量,因为数组的总长度是固定的,不能被更改,而n虽然是被const修饰了,看起来像是一个常量,但实际上n还是一个变量。
虽然我们在定义数组的时候[ ]里面只能用常量,但我们使用数组的时候[ ]里面的值可以是常量或变量,例如我们需要遍历数组的数的时候,我们可以用s[n]来遍历。
#include
#define num 10000
int main(){
int n=num;
printf("n=%d\n",n);
}
#define又称宏定义,标识符为所定义的宏名,简称宏。#define 的功能是将标识符定义为其后的常量。一经定义,程序中就可以直接用标识符来表示这个常量。
那么关于#define,我们还需要注意一点
#include
#define num 4+2
int main(){
float n=num/2;
printf("n=%f\n",n);
}
当程序运行出来的时候,你可能认为是6/2=3,那你就掉入陷阱了,当程序运行时,因为程序只知道你给num定义的是4+2,但程序不会提前把它们加起来,所以运行的时候是4+2/2=5,那么我们应该如何解决这个问题呢?非常的简单,我们只需要给num加上括号就行了
#include
#define num 4+2
int main(){
float n=(num)/2;
printf("n=%f\n",n);
}
当加上括号后程序运行的时候就会以(4+2)/2的方式来运行,最终得出需要的结果。
枚举常量:就是能够一一列举的常量
#include
enum sum{ //enum是一种枚举类型
//而enum当中放的三个值就是枚举常量
l,
z=113,
c=5,
h,
j,
t,
};
int main(){
enum sum a = z;
printf("%d\n",l);
printf("%d\n",a);
printf("%d\n",c);
printf("%d\n",h);
printf("%d\n",j);
printf("%d\n",t);
}
我们可以看到,由上往下依次打印出来后,结果是这样的,未赋值的量会根据前一个被赋值的量加1后输出,例如我给c赋值的是5,那么h正好在c后面,所以h打印出来的就是c的值加1,而一开始的l前面没有被赋值的数,所以系统自动把它的值定义为0。