C语言——常量

常量

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();
	
}

image-20221017184613368


浮点常量

1)浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。

2)举例说明

3.14159; //double常量
314159E-5; //科学计数法
3.1f; //float常量

字符常量

1)字符常量是括在单引号中,例如,‘x’可以存储在char类型的变量中。字符常量可以是一个普通的字符(例如‘x’),一个转义序列(例如‘\t’)

2)举例说明

'a'       'b'      'X'      'Y'    '6 '      '\t'

字符串常量

  1. 字符串字面值或常量是括在双引号 “” 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。可以使用空格做分隔符,把一个很长的字符串常量进行分行
  2. 举例说明
#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的区别

image-20221017195540938

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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值