基本的数据类型和规范
C语言基础—数据类型和规范
- 🔜 首先 C 语言所允许的合法符
- ❗ 数据类型和关键字图示
- ❗❗ string 不是C语言关键字
- 🤔 关于关键字更多的参考
- ⚛ 常量与变量
- 常量定义和分类
- 指数表示法
- 字符常量的转义字符
- 变量定义
- ❗变量(标识符)的命名规范
- 整数类型及其分类
- 浮点型类型及其分类
- 字符型及其ASCII码表
- 🎬️ ASCII码表快速记忆内容
- ASCII表规则记忆
- ASCII码表分三部分
- 参考地址
- 字符串型定义
- 字符串型常量与字符型区别
- 字符串常量
🔜 首先 C 语言所允许的合法符
字母:A-Z, a-z
数字:0-9
特殊符号:~`!@#%^&*()_-+=|{}[]:;"'<>,.?/$
❗ 数据类型和关键字图示
- 数据类型:
- C语言中的关键字包括:
上述关键字是 C 语言中最基本的关键字,在大多数情况下,都是必须使用的。
但是,C 语言也有一些扩展关键字,这些关键字只在特定的编译器或环境中才能使用。例如,_Bool、_Complex 和 _Imaginary 等关键字是 C99 标准的
这里需要注意一下
❗❗ string 不是C语言关键字
C语言中没有 string
,要想在C语言中使用字符串,就要在头文件里定义#include<string.h>(引用)
而字符串在c++里的定义是#include<string>
;
在C/C++中使用字符串也就是定义时不一样,其他的都一样。
string 是字符串,char是单个的字符。
- string相当于一个容器,char可以放在里面。
- string有结束符’\n’,char是没有的。
- string是c++里的,不是c里的。
- 用string存储字符串时,不用设定字符串的长度,而char要设定。
- 还有就是,string有很强很方便的功能,比如可以方便的赋值,方便的比较大小。
🤔 关于关键字更多的参考
- C语言中32个关键字详解
- C语言的32个关键字和9种控制语句
⚛ 常量与变量
常量定义和分类
- 常量
常量是指在程序运行过程中,其值不发生变化的量。常量的分类如下图所示:
字面常量 | 在程序中直接出现的常数,如 10、20、“hello” 等 |
符号常量 | 在程序中用一个名字来表示常量值,如 #define PI 3.1415926 等 |
枚举常量 | 在程序中用枚举类型来表示常量值,如 enum color {red, green, blue} 等 |
const 常量 | 在程序中用 const 关键字来声明的常量,它的值在编译时被确定,在程序运行期间不能被改变。 |
在当前阶段,我们的讨论仅限于基本常量(字面常量),即整型常量、浮点型常量和字符型常量等。
指数表示法
由于计算机无法表示上角和下角,所以规定以字母 e 或者 E 代表以 10 为底的指数。
如 32.23e3(表示 32.23*10^3),-323.34e-6(表示 -323.34 * 10^-6)
注意:e 或者 E 之前必须有数字,且 e 或者 E 后面必须为整数,不能是 e3 或者 12e4.1 这种形式。
字符常量的转义字符
在 C 语言中,转义字符是一种特殊的字符,它用来表示一些不能直接输入的字符
,如回车、退格、换行等。
转义字符由一个反斜杠 () 和一个字母或符号
组成,如 \n、\r、\t 等。
下面是一些常用的转义字符:
字符 | 含义 |
---|---|
\a | 响铃,表示输出文本时产生响铃声。 |
\b | 退格,表示输出文本时光标向左移一个字符的位置。 |
\f | 换页,表示输出文本时光标换到下一页。 |
\n | 换行,表示输出文本时光标换行。 |
\r | 回车,表示输出文本时光标换行并回到行首。 |
\v | 垂直制表 |
\t | 水平制表(右移 8 格) |
\\ | 反斜杠,表示一个普通的反斜杠字符。 |
\" | 双引号,表示一个普通的双引号字符。 |
\' | 单引号,表示一个普通的单引号字符。 |
\add | 3 位 8 进制数代表的字符 |
C 语言中的转义字符并不止上述提到的几种,还有其他一些常用的转义字符,包括:
\?:问号,表示一个普通的问号字符。
\0:空字符,表示一个空字符,可以用来结束字符串。
\ooo:八进制数,表示一个八进制字符。
\xhh:十六进制数,表示一个十六进制字符。
变量定义
- 变量
变量代表一个有名字的、具有特殊属性的存储单元。它可以用来保存数据。变量的值是可以改变的。
- 定义是 : <类型名称> <标识符>
例如:
int a; int b; int a,b; int price; int amount; …
int 代表定义的变量是整数类型。 后面的是变量名字也就是标识符
❗变量(标识符)的命名规范
- 变量的命名规定如下:C语言规定标识符只能由 字母、数字和下划线三种字符组成,并且第一个字符必须为字母或下画线。
例如: ¥ qa,1ew,#22 这些都是非法的标识符。
sum,_total, month, Student name, lotus_1_2_3, BASIC这些是合法的
- 注意:C 语言中的标识符是区分大小写的,也就是说,标识符 myVariable 和标识符 myvariable 是两个不同的标识符。
整数类型及其分类
整数类型的取值范围取决于该类型所占的存储空间大小。例如,在C语言中,整型变量可以是short、int或long
,分别占用2、4或8个字节
的存储空间。
在大多数编程语言中,整数类型通常分为以下几种:
-
整型(int)
:这是最常用的整数类型,通常是一个 4 字节(32 位)整数,取值范围大约为 -2,147,483,648 到 2,147,483,647。 -
短整型(short)
:这是一个较小的整数类型,通常是一个 2 字节(16 位)整数,取值范围大约为 -32,768 到 32,767。 -
长整型(long)
:这是一个较大的整数类型,通常是一个 8 字节(64 位)整数,取值范围大约为 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。 -
无符号整型(unsigned)
:这是一种特殊的整数类型,它只能表示非负整数。例如,unsigned int 可以表示 0 到 4,294,967,295 之间的整数。
在不同的语言中,整数类型的名称可能略有不同,但它们的基本概念是相同的。
浮点型类型及其分类
浮点数类型是用来表示带有小数部分的数字的数据类型。浮点数类型通常包括:
-
单精度浮点型(float)
:这是一种较小的浮点数类型,通常是一个 4 字节(32 位) 浮点数,精度约为 6 位小数。 -
双精度浮点型(double)
:这是一种常用的浮点数类型,通常是一个 8 字节(64 位) 浮点数,精度约为 15 位小数。 -
长双精度浮点型(long double)
:这是一种较大的浮点数类型,通常是一个 16 字节(128 位)浮点数,精度约为 19 位小数。
总结如下表:
浮点数类型的名称也可能因编程语言而异,但它们的基本概念是相同的。
字符型及其ASCII码表
也就是单个字符,char型
一般以 1 个字节(8 位) 来存放一个字符。
字符型数据在存储时,并不是把该字符本身存放到内存单元中,而是把该字符相应的 ASCII 码值存放到该存储单元中。
例如:
也就是%c输出字符型,%d可以看出它的ASCII码值:
- 注意 :字符型数据
区分大小写
,例如,字符 ‘c’ 的 ASCII 码值是 99,‘C’ 的 ASCII 码值是 67,两者并不是同一个字符。
ASCII码表:
🎬️ ASCII码表快速记忆内容
ASCII表规则记忆
我们仅仅要记住了一个字母或数字的 ASCII 码
(比如记住 A 为 65 , 0 的 ASCII 码为 48 ),
知道对应的大写和小写字母之间差 32。
0 -- 32 按键
33 -- 47 other字符
48(0x30) -- 57 0到9字符
58 -- 64 other字符
65(0x41) -- 90 A到Z字符
91 -- 96 other字符
97(0x61) -- 122 a到z字符
123 -- 127 other字符
ASCII码表分三部分
ASCII码大致能够分作三部分組成。
- 第一部分是:ASCII非打印控制字符。
- 第二部分是:ASCII打印字符。
- 第三部分是:扩展ASCII打印字符。
参考地址
ASCII表 基本记忆 – C
ASCII码表网站
字符串型定义
字符串型是一种类型,用来表示文本数据。在许多编程语言中,它是一种内置的数据类型,用来表示一串文本字符。
需要注意的是string类型在c中没有,需要引用string.h头文件。
也可以使用char *a和 char a[]数组 来声明字符串类型
- 参考更多:
C/C++ 字符串详记(char[], char*, string)
字符串型常量与字符型区别
-
字符常量是由单引号括起来的,字符串常量是由双引号括起来的。
-
字符常量只能是单个字符,字符串常量则可以含一个或多个字符。
-
在C语言中,有字符变量,但是
没有字符串变量
,可以用一个字符数组\指针来存放一个字符串常量。 -
字符常量
占1字节
的内存空间。字符串常量
占的内存字节数等于字符串中字节数加1
,增加的1个字节用来存放字符"\0"(ASCII码为0),这是 字符串结束的标志,如字符串"C program",占10个字节的内存存储(空格和"\0"各占1个字节)。
字符串常量
字符串常量是用一对双引号括起来的零个或多个字符组成的序列,
如"hello",“China”,“b” 都是字符串常量。
字符串常量的存储与字符常量的存储是不同的。字符串中的每个字符占用一个字节,在存储字符串常量时还要自动在其末尾加上 ‘\0’ 作为字符串结束的标志。 我们先来一起看下 “How do you do.” 是如何存储的吧!
因此大家不要将字符常量和字符串常量混淆哦,‘b’ 和 “b” 是完全不同的。前者是字符常量,在内存中占用的字节数为 1;而后者是字符串常量,在内存中占用的字节数为 2,包含字符 ‘b’ 和 ‘\0’。
例如,如果先用语句char c定义字符型变量c,后令c="a"或c=“CHINA”,那么这样的赋值都是非法的,原因是不可以将字符串型常量赋值给字符型变量。C语言中没有定义字符串型变量的关键字,可以使用char *a和 char a[]数组 来声明字符串类型。