C语言基础—数据类型和规范

基本的数据类型和规范


C语言基础—数据类型和规范

  • 首先 C 语言所允许的合法符
  • ❗ 数据类型和关键字图示
    • ❗❗ string 不是C语言关键字
    • 关于关键字更多的参考
  • ⚛ 常量与变量
    • 常量定义和分类
      • 指数表示法
      • 字符常量的转义字符
    • 变量定义
      • ❗变量(标识符)的命名规范
  • 整数类型及其分类
  • 浮点型类型及其分类
  • 字符型及其ASCII码表
    • ️ ASCII码表快速记忆内容
      • ASCII表规则记忆
      • ASCII码表分三部分
      • 参考地址
  • 字符串型定义
  • 字符串型常量与字符型区别
  • 字符串常量


首先 C 语言所允许的合法符

字母:A-Z, a-z
数字:0-9
特殊符号:~`!@#%^&*()_-+=|{}[]:;"'<>,.?/$

❗ 数据类型和关键字图示

  • 数据类型:
    C语言基础—数据类型和规范_第1张图片
  • C语言中的关键字包括:

C语言基础—数据类型和规范_第2张图片

上述关键字是 C 语言中最基本的关键字,在大多数情况下,都是必须使用的。
但是,C 语言也有一些扩展关键字,这些关键字只在特定的编译器或环境中才能使用。例如,_Bool、_Complex 和 _Imaginary 等关键字是 C99 标准的


这里需要注意一下

❗❗ string 不是C语言关键字

C语言中没有 string ,要想在C语言中使用字符串,就要在头文件里定义#include(引用)而字符串在c++里的定义是#include

在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 关键字来声明的常量,它的值在编译时被确定,在程序运行期间不能被改变。

在当前阶段,我们的讨论仅限于基本常量(字面常量),即整型常量、浮点型常量和字符型常量等。

C语言基础—数据类型和规范_第3张图片


指数表示法

由于计算机无法表示上角和下角,所以规定以字母 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 位小数。

总结如下表:
C语言基础—数据类型和规范_第4张图片

浮点数类型的名称也可能因编程语言而异,但它们的基本概念是相同的。


字符型及其ASCII码表

也就是单个字符,char型一般以 1 个字节(8 位) 来存放一个字符。

字符型数据在存储时,并不是把该字符本身存放到内存单元中,而是把该字符相应的 ASCII 码值存放到该存储单元中。

例如:

C语言基础—数据类型和规范_第5张图片
也就是%c输出字符型,%d可以看出它的ASCII码值:

C语言基础—数据类型和规范_第6张图片

  • 注意 :字符型数据 区分大小写,例如,字符 ‘c’ 的 ASCII 码值是 99,‘C’ 的 ASCII 码值是 67,两者并不是同一个字符。

ASCII码表:

C语言基础—数据类型和规范_第7张图片


️ 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.” 是如何存储的吧!

C语言基础—数据类型和规范_第8张图片
因此大家不要将字符常量和字符串常量混淆哦,‘b’ 和 “b” 是完全不同的。前者是字符常量,在内存中占用的字节数为 1;而后者是字符串常量,在内存中占用的字节数为 2,包含字符 ‘b’ 和 ‘\0’。

例如,如果先用语句char c定义字符型变量c,后令c="a"或c=“CHINA”,那么这样的赋值都是非法的,原因是不可以将字符串型常量赋值给字符型变量。C语言中没有定义字符串型变量的关键字,可以使用char *a和 char a[]数组 来声明字符串类型。


你可能感兴趣的:(C语言程序设计,c语言,开发语言,c++)