07 C语言常量
常量的定义
常量是指固定的值,固定值在程序执行期间不会改变。这些固定值,又叫做字面量。
常量可以是任意的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。
不要搞得太复杂,就把常量理解为是:常规的变量;只不过常量的值在定义后不能进行修改罢了。
整数常量
整数常量可以是十进制、八进制或十六进制的常量。
十进制、八进制或十六进制的前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。
整数常量也可以附带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。
下面列举几个整数常量的实例:
123 /* 合法的 /
128u / 合法的 /
0xFeeL / 合法的 /
078 / 非法的:8 不是八进制的数字 /
031UU / 非法的:不能重复后缀 */
以下是各种类型的整数常量的实例:
78 /* 十进制 /
0213 / 八进制 /
0x4b / 十六进制 /
42 / 整数 /
33u / 无符号整数 /
33l / 长整数 /
33ul / 无符号长整数 */
浮点常量
浮点常量由整数部分、小数点、小数部分和指数部分组成。通常可以使用小数形式或者指数形式来表示浮点常量。
当使用小数形式表示时,必须包含整数部分、小数部分,或者将两者同时包含。当使用指数形式表示时, 必须包含小数点、指数,或者将两者同时包含。带符号的指数是用 e 或 E 引入的。
下面列举几个浮点常量的实例:
3.1415926 /* 合法的 /
314159E-5L / 合法的 /
500E / 非法的:不完整的指数 /
200f / 非法的:没有小数或指数 /
.e55 / 非法的:缺少整数或分数 */
s字符常量
字符常量是括在单引号中,例如,'Moses' 可以存储在 char 类型的简单变量中。
字符常量可以是一个普通的字符(例如 'x')、一个转义序列(例如 '\t'),或一个通用的字符(例如 '\u02C0')。
转义符
在 C 中,有一些特定的字符,当它们前面有反斜杠时,它们就具有特殊的含义,被用来表示如换行符(\n)或制表符(\t)等。下表列出了一些这样的转义序列码:
| 转义序列 | 含义 |
|---|---|
| \ | \ 字符 |
| ' | ' 字符 |
| " | " 字符 |
| ? | ? 字符 |
| \a | 警报铃声 |
| \b | 退格键 |
| \f | 换页符 |
| \n | 换行符 |
| \r | 回车 |
| \t | 水平制表符 |
| \v | 垂直制表符 |
| \ooo | 一到三位的八进制数 |
| \xhh . . . | 一个或多个数字的十六进制数 |
如下的示例显示了一些转义序列字符:
#include <stdio.h>
int main()
{
printf("Hello\t World \n \n");
return 0;
}
编译并执行上面程序,结果如下:
Hello World

字符串常量
我们使用字符串字面值或常量时,它们是括在双引号 "" 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。
可以使用空格做分隔符,把一个很长的字符串常量进行分行(hang)。
下面的示例显示了一些字符串常量。三种形式所显示的字符串是相同的。
1 、"hello, world"
2、"hello,
world"
3、"hello, " "w" "orld"
定义常量
C语言 中,有两种定义常量的方式,分别是:
1、使用 #define 预处理器定义常量。
2、使用 const 关键字定义常量。
#define 预处理器 定义常量
使用 #define 预处理器定义常量的形式(语法格式)如下:
#define identifier value
详细示例如下:
#include <stdio.h>
#define Pi 3.14
#define r 10
#define NEWLINE '\n'
int main()
{
int s;
s = Pi* r*r;
printf("该圆的面积是 : %d", s);//%d表示数据按十进制有符号整型数输入或输出
printf("%c", NEWLINE);//对“提示内容”的输出换行的作用
return 0;
}
编译并执行上面程序,结果如下:
该圆的面积是 : 314


const 关键字 定义常量
也可以使用** const 前缀**声明指定类型的常量,如下所示:
const type variable = value;
详见如下代码示例:
#include <stdio.h>
int main()
{
const float Pi = 3.14;
const int r = 10;
const NEWLINE = '\n';
float s;
s = Pi* r*r;
printf("该圆的面积是 : %f", s);// 注意,这里是f%
printf("%c", NEWLINE);//对“提示内容”的输出换行的作用
return 0;
}
编译并执行上面程序,结果如下:
该圆的面积是 : 314.000010

注意:把常量定义为大写字母形式,是一个很好的编程实践。
07 C语言常量的更多相关文章
- 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型
[源码下载] 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 常量 变量 基本 ...
- GO语言学习(八)Go 语言常量
Go 语言常量 常量是一个简单值的标识符,在程序运行时,不会被修改的量. 常量中的数据类型只可以是布尔型.数字型(整数型.浮点型和复数)和字符串型. 常量的定义格式: const identifier ...
- 不同标准下的C语言常量范围的默认类型的检测 (测试样例为C90与C99)
不同标准下的C语言常量范围的默认类型的检测 一.C90与C99标准下的不同常量范围的默认类型 C90标准下对不同常量范围默认类型的检测实现及运行结果: C99标准下对不同范围默认类型的检测实现 ...
- JavaScript语言常量和变量
我们在以往介绍使用JavaScript编写一个HelloJS的小程序,其中我们就用到变量.常量和变量是构成表达式的重要组成部分.常量在声明和初始化变量时,在标识符的前面加上关键字const,就可以把该 ...
- GO语言常量和变量
标识符与关键字 标识符 人为定义有特殊意义的词,Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头. 关键字 关键字是指编程语言中预先定义好的具有特殊含义的标识符. GO语言中有25 ...
- 07.C语言:结构体、共用体、枚举
一.结构体 是一种复合的数据类型,由多个不同类型的数据(为结构体的成员)组成的集合. 在c语言中没有给出结构体这种类型具体的形式(名称),但是给出类定义该结构体类型的方法(格式). 在使用结构体类型时 ...
- 07. Go 语言接口
Go 语言接口 接口本身是调用方和实现方均需要遵守的一种协议,大家按照统一的方法命名参数类型和数量来协调逻辑处理的过程. Go 语言中使用组合实现对象特性的描述.对象的内部使用结构体内嵌组合对象应该具 ...
- 【C语言】C语言常量和变量
目录: [常量] · 定义 · 分类 · 特殊字符型常量 [变量] · 定义 · 定义变量 · 变量的使用 · 变量使用注意 · 变量常见问题 1.常量 · 定义 常量 ...
- Swift语言—常量、变量、类型赋值
常量:常量在作用域内不能被赋值且不会发生改变,只读不写,每个常量都必须有唯一的名字和内存空间:关键字:let 变量:变量在作用区域内可以它的值可以被改变,可读可写可覆盖,每个常量都必须有唯一的名字 ...
随机推荐
- go语言基础实例
一:变量 1)变量声明 func main() { var v1 int var v2 int //一次声明多个变量 var ( v3 int v4 int ) //变量最开始会有一个零值 fmt.P ...
- java调用C# webService发布的接口
java调用C# webService发布的接口 java调用C# webService方式有很多种我这里只介绍一种 首先需要引入axis的jar包 axis的maven坐标如下 <depend ...
- React的几种组件
一.函数组件 该函数在React中是一个有效的组件,可以接收唯一带有数据的props(代表属性)对象,并返回一个React元素.函数式组件要特别注意,组件名称首字母一定要大写.这种方式也成为无状态组件 ...
- vue 使用 sass 或者 less ( vue-cli 3 )
项目使用 vue-cli 3 在项目中使用 sass npm install sass-loader --save -D cnpm install sass-loader --save -D ...
- 【JDK】Linux安装源码包JDK完整步骤
[JDK]Linux安装源码包JDK完整步骤 1.检查一下系统中的jdk版本 [root@localhost software]# java -version 显示: openjdk version ...
- 【JAVA】生成一个32位的随机数。防止重复,保留唯一性
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985, QQ986945193 微博:http://weibo.com/mcxiaobing import ...
- 《神经网络的梯度推导与代码验证》之vanilla RNN前向和反向传播的代码验证
在<神经网络的梯度推导与代码验证>之vanilla RNN的前向传播和反向梯度推导中,我们学习了vanilla RNN的前向传播和反向梯度求导,但知识仍停留在纸面.本篇章将基于深度学习框架 ...
- C# aspx 禁止文本款输入缓的几种方法
1 在ASP.NET中可以在页面中加入以下内容: <%@ OutputCache Location="None" VaryByParam="None" ...
- 对韩峰著《SQL优化最佳实践》P7 案例的质疑
事先申明下,我的DB环境是Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production,如果与作者环境不同而 ...
- 20191002思维导图工具MindManager 000 033