图片[1]yxqz常量的概念yxqz小余塘

常量的概念

  • 常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量

  • 常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。

  • 常量就像是常规的变量,只不过常量的值在定义后不能进行修改。

  • 常量的名字需要遵守标识符规则

整数常量

  • 整数常量的值可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。

  • 整数常量的值也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。

212         /* 合法的 */
215u        /* 合法的 */
0xFeeL      /* 合法的 */
078         /* 非法的:8 不是八进制的数字 */
032UU       /* 非法的:不能重复后缀 */
   
85         /* 十进制 */
0213       /* 八进制 */
0x4b       /* 十六进制 */
30         /* 整数 */
30u        /* 无符号整数 */
30l        /* 长整数 */
30ul       /* 无符号长整数 */

 

浮点常量

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

  • 当使用小数形式表示时,必须包含整数部分、小数部分,或同时包含两者。当使用指数形式表示时, 必须包含小数点、指数,或同时包含两者。带符号的指数是用 e 或 E 引入的。

3.14159       /* 合法的 */
314159E-5L    /* 合法的 */
510E          /* 非法的:不完整的指数 */
210f          /* 非法的:没有小数或指数 */
.e55          /* 非法的:缺少整数或分数 */

 

字符常量

  • 字符常量是括在单引号中

  • 字符常量可以是一个普通的字符(例如 ‘x’)、一个转义序列(例如 ‘\t’),或一个通用的字符(例如 ‘\u02C0’)。

转义字符

参考而已

转义序列 含义
\ \ 字符
‘ 字符
” 字符
\? ? 字符
\a 警报铃声
\b 退格键
\f 换页符
\n 换行符
\r 回车
\t 水平制表符
\v 垂直制表符
\ooo 一到三位的八进制数
\xhh . . . 一个或多个数字的十六进制数
#include <stdio.h>

int main()
{
  printf("Hello\tWorld\n\n");

  return 0;
}

 

字符串常量

  • 字符串字面值或常量是括在双引号 “” 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。

  • 空格占一个字符长度空间

"hello, dear"
​
"hello, \
​
dear"
​
"hello, " "d" "ear"

 

定义常量

  1. 使用 #define 预处理器。

  2. 使用 const 关键字。

方式1——#define 预处理器

#define 常量名称 常量值

 

相关实例:

#include <stdio.h>

#define LENGTH 10  
#define WIDTH 5
#define NEWLINE '\n'

int main()
{

  int area;  
 
  area = LENGTH * WIDTH;
  printf("value of area : %d", area);
  printf("%c", NEWLINE);

  return 0;
}

 

方式2——const关键字

const 数据类型 量名称 = 常量值 

const 声明定义常量要在一个语句内完成,必须一次性写完

图片[2]yxqz常量的概念yxqz小余塘

#include <stdio.h>

int main()
{
  const int  LENGTH = 10;
  const int  WIDTH  = 5;
  const char NEWLINE = '\n';
  int area;  
 
  area = LENGTH * WIDTH;
  printf("value of area : %d", area);
  printf("%c", NEWLINE);

  return 0;
}

 

define和const的区别

  • define是宏定义,它不能定义常量,但宏定义可以实现在字面意义上和其它定义常量相同的功能,不为宏名分配内存,也就是说,没有给变量名分的哦

  • define 实现常量,没有赋值符号,没有数据类型

  • 宏是在预处理阶段展开,不做任何类型检查

  • 宏定义,不占用内存

  • const实际上是改变一个变量的存储类,把该变量所占的内存变为只读。所以和定义变量的方式一样。

  • const 常量是编译运行阶段使用。有具体的类型,在编译阶段会执行类型检查

  • const占用内存空间(可以是堆中也可以是栈中)

常量的注意

  • 字符常量有且仅有一个字符,用单引号表示

  • 字符串常量可以包括全部的字符,用双引号表示

  • 转义字符用 \开始

文章版权声明 1、本网站名称:小余塘
2、本站永久网址:https://www.yxqz.top/
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ2457431511进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容