常量
文章目录
1.基本介绍
- (1)常量是固定值,在程序执行期间不能改变。这些固定的值,又叫做字面量。
- (2)常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。
- (3)常量的值在定义后不能进行修改
2.经常使用的常量
整数常量
-
整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意
-
整数常量举例说明
85 /*十进制*/ 0213 /*八进制*/ 0x4b /*十六进制*/八进制和十六进制后面解释 666 /*整数*/ 666u /*无符号整数*/ 666l /*长整数*/ 666ul /*无符号长整数*/
代码演示:
#include <stdio.h>
int main(){
int n1 = 0213; /*八进制*/
int n2 = 0x4b; /*十六进制*/
//验证
printf("n1=%d n2=%d",n1,n2);
getchar();
}
浮点常量
1)浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。
2)举例说明
3.14159; //double常量
314159E-5; //科学计数法
3.1f; //float常量
字符常量
1)字符常量是括在单引号中,例如,‘x’可以存储在char类型的变量中。字符常量可以是一个普通的字符(例如‘x’),一个转义序列(例如‘\t’)
2)举例说明
'a' 'b' 'X' 'Y' '6 ' '\t'
字符串常量
- 字符串字面值或常量是括在双引号 “” 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。可以使用空格做分隔符,把一个很长的字符串常量进行分行
- 举例说明
#include <stdio.h>
int main(){
char c1 = 'a';
char c2 = '\t';//'\t'是字符常量
char str1[20]="hello world!";//"hello world"字符串常量
char str2[100]="hello \
universe ";//等价 "hello universe"
//验证
printf("\nstr1=%s str2=%s",str1,str2);
getchar();
}
3.define定义常量
#define预处理器
1)#define预处理器定义常量的形式
#define 常量名 常量值
2)案例演示(求圆的面积)
#include <stdio.h>
#define PI 3.14 //定义常量 PI 常量值3.14
int main() {
//PI = 3.1415 可以吗?不行
double area;
double r = 1.2;//半径
area = PI * r * r;
printf("面积 : %.2f", area);
getchar();
return 0;
}
4.const定义常量
const关键字
1)可以使用const声明指定类型的常量
const 数据类型 常量名 = 常量值;
2)案例演示
#include <stdio.h>
const double PI=3.14; //定义常量 PI 常量值3.14
int main() {
double area;
double r = 1.2;//半径
area = PI * r * r;
printf("面积 : %.2f", area);
getchar();
return 0;
}
说明:
- 1.const是一个关键字,规定好,表示后面定义了一个常量
- 2.PI是常量名,既是一个常量,常量值就是3,14
- 3.PI因为是常量,因此不可以修改
- 4.const定义常量时,需要加分号
5.const 和 #define的区别
6.思考问题
1.边界效应
思考下列代码,c ,C分别等于多少?(重点!!!)
#include <stdio.h>
#define A 1
#define B A+3
#define C A/B*3
#define a 1
#define b (a+3)
#define c a/b*3
int main(){
//分析过程
//#define就是一个简单的替换!!!
//C 其实就是 A/A+3*3=1/1+3*3=1+9=10
//c 其实就是 A/(A+3)*3=1/(1+3)*3=0
double d1 = 1.0/4*3;//这里1要写为1.0!!!小数参与运算,提升精度
printf("\nC=%d",C);
printf("\nc=%.2f",c);
printf("\nd1=%.2f",d1);
getchar();
}
2.define比const更加灵活
//const不能重定义,不可以定义两个一样的,
//而define通过undef取消某个符号的定义,再重新定义
const double PI=3.14;
//const double PI=3.145;
#define PI2 3.14
#undef PI2 //取消PI2的定义
#define PI2 3.145
3.define可以配合#ifdef、 #ifndef、 #endif 来使用
#include <stdio.h>
#define DEBUG
int main(){
#ifdef DEBUG //如果定义过DEBUF
printf("ok,调试信息");
#endif
#ifndef DEBUG //如果没有定义过DEBUF
printf("hello,另外的信息");
#endif
getchar();
}