Bootstrap

C语言绝对值得一看的常识讲解:基本数据类型,常量和变量篇

相信有很多C语言初学者对于数据类型,常量和变量这些内容有困惑,今天就和大家分享一下我的理解,希望对大家有帮助。

目录

1.数据类型简介

1.1数值类型(分为整型和浮点型,整型用于整数,浮点型则是用于含小数点的数据)

 1.1.1整型(整型变量的基本类型说明符是int)

1.1.2浮点型(浮点型变量的基本类型说明符是float)

1.2字符型(字符型的变量的基本类型说明符是char)

   2. signed 和 unsigned

3. 数据类型的取值范围

4.标识符

4.1 标识符的命名规则。

4.2标识符的分类。

4.3使用标识符的注意事项。

5.常量

5.1整型常量

5.2实型常量

5.3字符常量

5.4字符串常量

5.5符号常量

6.变量

6.1变量的创建

6.2 变量的分类


1.数据类型简介

C语⾔提供了丰富的数据类型来描述⽣活中的各种数据。使⽤整型类型来描述整数,使⽤字符类型来描 述字符,使⽤浮点型类型来描述⼩数。所谓“类型”,就是相似的数据所拥有的共同特征,编译器只 有知道了数据的类型,才知道怎么操作数据。

下图是C语言中提供的各种数据类型。本篇文章着重讲解基本类型。

1.1数值类型(分为整型和浮点型,整型用于整数,浮点型则是用于含小数点的数据)
 1.1.1整型(整型变量的基本类型说明符是int)
//短整型
short [int]
[signed] short [int]
unsigned short [int]
//整型
int
[signed] int
unsigned int
//⻓整型
long [int]
[signed] long [int]
unsigned long [int]
//更长的整型
long long [int]
[signed] long long [int]
unsigned long long [int]
1.1.2浮点型(浮点型变量的基本类型说明符是float)
float
double
long double
1.2字符型(字符型的变量的基本类型说明符是char)
char
[signed] char
unsigned char
   2. signed 和 unsigned

C 语⾔使⽤ signed 和 unsigned 关键字修饰字符型和整型类型的。 ①signed 关键字,表⽰⼀个类型带有正负号,包含负值;② unsigned 关键字,表⽰该类型不带有正负号,只能表⽰零和正整数。

对于 int 类型,默认是带有正负号的,换句话说 int 等同于 signed int 。 由于这是默认情况,关键字 signed ⼀般都省略不写。无符号型(unsigned int,简记为unsigned)则是没有正负号,对应其的最大值大于有符号整型——同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。 ⽐如,16位的 signed short int 的取值范围是:-32768~32767,最⼤是32767;⽽ unsigned short int 的取值范围是:0~65535,最⼤值增⼤到了65,535。32位的 signed int 的取值范围可以参看 limits.h 中给出的定义。

字符类型 char 也可以设置 signed 和 unsigned 。

但是值得我们特别注意,C 语⾔规定 char 类型默认是否带有正负号,由当前系统决定。

即char是有符号型还是无符号型,具体由当前的系统决定,而不是像int那样默认是有符号类型。

3. 数据类型的取值范围

可以看到我们不仅将数据类型分为整型和浮点型等基础,甚至在此基础上又细分出short,int,long等,那么我们为什么要这样大费周章呢?

其实每⼀种数据类型有⾃⼰的取值范围,也就是存储的数值的最⼤值和最⼩值的区间,有了丰富的类 型,我们就可以在适当的场景下去选择适合的类型。(那么追问一下为什么每一种数据类型要有自己的取值范围呢?我们直接默认用最大的,不就不用担心不够用了吗?)

查看当前系统上不同数据类型的极限值: limits.h ⽂件中说明了整型类型的取值范围。

                                                                  float.h 这个头⽂件中说明浮点型类型的取值范围。

4.标识符

标识符是由系统或程序设计者为数据对象指定的名字。

在我最开始时学习时有时候会看到编译器报错为未识别标识符,一般都是使用了没有定义的变量,但是当时一直没有人去特别介绍到底什么是标识符。

4.1 标识符的命名规则。

①可以由数字、字母、下划线_组成(点号、空格、加减号这些不能作为组成元素)

②组成元素中的数字不能作为开头(数字开头就不是标识符)

③不能是系统自带关键字

④区分大小写(大小写不同,则不是同一个标识符)

4.2标识符的分类。

按照功能的不同,C语言中的标识符可分为三类,即关键字标识符、预定义标识符和用户自定义的标识符。

①关键字标识符,简称关键字。关键字是在ANSI C中预先指定的,是具有特殊含义的标识符。该类标识符已经被各种C语言系统使用,程序设计者不得在程序中重新定义。按照用途不同关键字又分为四类,数据类型关键字、控制语句关键字、存储类型关键字和其他关键字。(关于关键字的具体用法在后面会专门介绍。)

②预定义标识符包括两类:一类是C语言提供的库函数名,如printf、scanf等;另一类是C语言程序中使用的预编译命令名等,如include、define等。

③程序设计者定义的标识符。程序设计者根据自己的需要给特定的对象起的名字,简称自定义标识符。

4.3使用标识符的注意事项。

①区别大小写

②自定义标识符时,应该满足“见名知意”的原则,即通过数据对象的标识符应该知道其含义。通常选择能表示数据对象含义的英文单词或词组作为标识符。

③如果一个标识符只含一个英语单词,建议全部使用小写字母表示;如果用一个英语词组表示数据对象的名字,建议把各英文单词的首字母大写。

5.常量

在程序运行过程中其值不能被改变的量,称为常量。由常量的名字,一般可以确定其含义。因此也称为字面量。

5.1整型常量

整型常量即数学中的整数。C语言的整型常量有三种表示形式:

①十进制整数。我们在程序中直接用于给变量赋值的整数都是十进制整数,如2009,-16等均是。

②八进制整数。(以数字0为前缀的整数)。如0123,023等。

③十六进制整数。(以0x或0X为前缀的整数)。如0x122,0X45等。

在C语言中,整型常量默认是int类型。此外,根据整数所需要的内存单元大小,又可以将整数分为长整型数(数的末尾加“L”或“l”)、短整型数(数的末尾加“H”或“h”)和无符号整型数(数的末尾加“U”或“u”)。

个人理解:这些常量外表长相是不一样的,但其实在用其赋值时本质都是把这些常量先转化为二进制,然后通过一系列变化,最终以其二进制补码形式存储在系统中。至于打印出来的结果也是根据我们选择的格式字符,我们只需留意到底是十进制数,八进制数,还是十六进制数,确保数据是我们想赋给变量的即可,非特殊情况或特殊要求,没必要拘泥于形式。(不过,一般来说十进制数肯定是最直观的。)

5.2实型常量

实型常量也成为浮点数常量,即数学中含有小数点的实数。

C语言中,实型常量的常用表示方法有两种。

①十进制小数形式。它有数字和小数点组成,必须有小数点。

②十进制指数形式。

由尾数部分、字母E或e和指数部分组成,格式为:+(-)尾数E指数。

如1.23E-2、3.14E+3等,他们表示的数值分别为1.23 X 10^(-2)、3.14 X10^3。

特别注意
a.以小数形式表示实数时,必须有小数点,并且小数点的前、后至少‘一边要有数字。

b.以指数形式表示实数时,字母E(或e)的前后必须有数字,并且指数部分只能是整数。如12.-E3、1.5E、E6都是不正确的实数。

在C语言中,实型常量默认为是double型的实数,如果在数的后面加字母f或F(如1.65f、654.87F),则认为是float型的实数。

5.3字符常量

字符常量是指用一对单撇号括起来的单个字符。例如,‘?’‘A’都是字符常量。

计算机中所使用的各种的字符都需要进行编码,即需要为每个字符赋予唯一的值。ANSI C按照美国信息交换标准码方式为常用字符编码。

C语言也含有一种特殊的字符常量——转移字符。

下面的这篇文章有一些简单介绍,感兴趣可以看看。

初识C语言-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_74950144/article/details/131879603?spm=1001.2014.3001.5502

5.4字符串常量

字符串常量是用一对双撇号括起来的字符序列。例如,"I LOVE YOU""a"都是字符串常量。

字符串常量可由多个字符组成,也可以由单个字符或零个字符组成。但是字符串常量必须用双撇号括起来。双撇号仅其定界符的作用,并不是字符串中的字符。例如,"w"是一个字符串常量,'w'是一个字符常量。

字符串常量中不能直接包含双撇号(")和反斜杠(\),若要使用这些字符,可参照转移字符中介绍的方法。

字符串常量和字符常量不同,两者之间的主要区别:

①字符串常量是用一对双撇号括起来的字符序列(0个,1个或多个),而字符常量是用一对单撇号括起来的单个字符。

②字符串常量在内存中存储时,串尾会自动增加一个结束标志符"\0"。

③一个字符型常量的值是其ASCII的编码值,可以与整型数据进行数值运算,而字符串常量没有独立数值的概念。

5.5符号常量

符号常量通过宏定义来实现,用一个指定的标识符(即名字)来代表一个字符串。宏定义的一般格式为

#define 标识符 字符串 

宏定义的作用是用指定的标识符代替后面的字符串。


6.变量
6.1变量的创建

上面了解清楚了数据类型,那么我们定义类型做什么呢?有什么作用呢?其实,类型是⽤来创建变量的,同时说明变量的基本类型。 什么是变量呢?C语⾔中把经常变化的值称为变量,不变的值称为常量。 变量创建的语法形式是这样的:

data_type name//前面是我们刚才介绍的数据类型说明符 后面是我们创建的变量的名字(标识符)
int age; //整型变量
char ch; //字符变量
double weight; //浮点型变量

我们在创建变量的时候可以同时赋给变量初始值,这叫变量初始化。

int age = 18;
char ch = 'w';
double weight = 48.0;
unsigned int height = 100;

//当然同类型变量创建时,可以用一个类型说明符。具体如下:
int a,b,c=0;//建立a,b,c三个整型变量,同时给c初始化为0
6.2 变量的分类

①全局变量:在⼤括号外部定义的变量就是全局变量 全局变量的使⽤范围更⼴,整个工程中想使⽤,都是可以使用的,生命周期长,作用范围广。

②局部变量:在⼤括号内部定义的变量就是局部变量,局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的。如果在定义之外使用,就会被系统识别为未知标识符。

特别要注意的是,当我们同时定义了相同名字的全局变量和局部变量,那么在局部变量作用范围内调用该变量时,局部变量优先使用。

#include <stdio.h>
int n = 1000;
int main()
{
    int n = 10;
    printf("%d\n" n);//打印的结果是多少呢?结果为10,因为局部变量优先使用。
    return 0;
}

;