C常量

常量

1.基本介绍

  • 常量是固定值,在程序执行期间不能改变,这些固定的值,又称为字面量
  • 常量可以是任何的基本数据类型,比如整数常量,浮点常量,字符常量,或字符串字面值,也有枚举常量
  • 常量的值在定义后不能进行修改

2.经常使用的常量

2.1 整数常量

  • 整数常量可以是十进制,八进制或十六进制的常量,前缀指定基数:0x或0X表示十六进制,0表示八进制,不带前缀则默认表示十进制,整数常量也可以带一个后缀,后缀是U和L的组合,U表示无符号整数,L表示长整数。后缀可以是大写,也可以是小写,U和L的顺序任意
  • 整数常量举例
85		//十进制
0213	//八进制
0x4b	//十六进制
    30	//整数
    30u //无符号整数
    30l //长整数
    30ul //无符号长整数
    

2.2 浮点常量

  • 浮点常量由整数部分,小数点,小数部分和指数部分组成。可以使用小数形式或者指数形式来表示浮点常量
  • 浮点常量举例
3.141159	//double常量
    313242E-5	//科学计数法
    3.1f	//float常量

2.3 字符常量

  • 字符常量是括在单引号中,例如'x'可以存储在char类型的变量中,字符常量可以是一个普通的字符,也可以是一个转义字符
  • 举例说明
'X'
    'Y'
    'A'
    'b'
    'l'
    '\t'

2.4 字符串常量

  • 字符串字面值或常量是括在双引号""中的,一个字符串包含类似于字符常量的字符:普通的字符,转义序列,和通用的字符,可以使用空格作为分隔符,把一个很长的字符串常量进行分行
  • 字符串常量举例
"hello,world"
    "北京"
    "hello \
    world"

2.5 案例演示

#include <stdio.h>

void main(){
    
    int n1 = 0213;
    int n2 = 0x4b;
    char c1 = 'a';
    char c2 = '\t';
    
    char str1[20] ="北京hello";//字符串常量
    char str2[100] = "hello \
    world";
    
    printf("n1 = %d n2 = %d",n1,n2);
    printf("str1=%s str2= %s",str1,str2);
    
    getchar();
    
}

3.常量的定义

3.1 常量定义的两种方式

  • 使用 #define预处理器
  • 使用const关键字

3.2 #define预处理器

  • define预处理器定义常量的形式

    • define 常量名 常量值

  • 案例

#include<stdio.h>

#define PI 3.14
int main(){
    
    double area;
    double r = 1.2;
    area = PI * r * r;
    printf("面积: %。2f".area);
    
    getchar();
    return 0;
}

3.3 const关键字

  • 可以使用const关键字声明指定类型的常量

    • const 数据类型 常量名 = 常量值 ; //即就是一个语句
  • 案例

#include <stdio.h>

//说明
//1.const是一个关键字,规定好,表示后面定义了一个常量
//2.PI是常量名,即使一个常量,常量值就是3.14
//3.PI因为使常量,因此不可以修改
//4.const定义常量时,需要加分号

const double PI = 3.14;
int main(){
    double area ;
    double r = 1.2;
    area = PI * r * r;
    printf("面积:%.2f",area);
    getcahr();
    return 0;
}

3.4 const和#define的区别

  • const定义常量时,带类型,define不带
  • const是在 编译运行时起作用,而define是在编译的预处理阶段起作用
  • define只是简单的替换,没有类型检查,简单的字符串替换会导致边界效应
  • const常量可以进行调试,define是不能进行调试的,主要是预编译阶段就已经替换掉了,调试的时候就没它了
  • const不能重定义,不可以定义两个一样的,而define通过undef取消某个符号的定义,再重新定义
  • define可以配合#ifdef,#ifndef,#endif来使用,可以让代码更加灵活,比如可以通过#define来启动或者关闭调试信息
#include<stdio.h>

#define A 1
#define B (A+3)
#define C A/B*3

const double PI = 3.14;

#define PI2 3.14
#undef PI2
#define PI2 3.145

void main(){
    
    double d1 = 1.0/4*3;
    printf("c=%.2f",C);
    printf("d1=%.2f",d1);
    
    getchar();
    
}
#include <stdio.h>

#define DEBUG
void main(){
    #ifdef DEBUG //如果定义过DEBUG
    	printf("ok,调试信息");
    #endif
    #ifndef DEBUG//如果没有定义过DEBUG
    	printf("另外的信息");
    #endif
    	getchar();
}
posted @ 2021-01-06 12:37  mx_info  阅读(335)  评论(0)    收藏  举报