零基础——C语言的基本数据类型和变量

1.数据类型

所谓类型,就是相似的数据所拥有的共同特征,也是对数据存储单元的安排,包括存储单元的长度以及数据的存储形式。不同的类型分配不同的长度和存储形式。编译器只有知道了数据的类型,才知道怎么操作数据。

1.1 signed 和 unsigned

在介绍C语言数据类型前,先引入两个关键字:signed 和 unsigned。

在C语言中使用signed 和 unsigned 关键字修饰字符型和整型类型。

signed 关键字,表示一个类型,带有正负号,包含负值(比如:海拔、温度...);

unsigned 关键字,表示该类型不带有正负号,只能表示零和正整数(比如:年龄、身高、体重..)。

  • signed 的使用:

对于int 类型,默认是带有正负号的,也就是说 int 等同于 signed int。由于这是默认情况,关键字signed一般省略不写,但是写了也不算错。

举例:

signed int a ;

// 等同于 int a ;

  • unsigned 使用的:

当 int 类型只表示非负整数,这时就必须使用关键字unsigned申明变量。

比如:

unsigned int a ;  

unsigned int 里面的 int 也可以省略,所以上面的变量声明也可以写成:

unsigned a ;  

说明:

(1)只有整型和字符型数据可以加signed 和 unsigned 修饰符,实型数据不能加。

(2)对无符号整型数据用 " %u "格式输出,有符号的整型数据用 " %d "格式输出。

1.2 基本类型

  • 整型

(1)短整型(short int)
short [ int ]    // 方括号[ ] 表示其中的内容是可选的,既可以有,也可以没有
[ signed ] short [ int ]
unsigned short [ int ]
(2)整型(int)
int
[ signed ] int
unsigned int
(3)长整型(long int)
long [ int ]
[ signed ] long [ int ]
unsigned long [ int ]
(4)更长整型(long long int)
long long [ int ]
[ signed ] long long [ int ]
unsigned long long [ int ]
  • 字符型

char      //character
[ signed ] char // 有符号的
unsigned char // ⽆符号的
注意:char 不等同于 signed char ,它有可能是 signed char ,也有可能是 unsigned char 。C语言规定 char 类型默认是否带有正负号,由当前系统决定。
  • 浮点型

(1)单精度浮点型: float
(2)双精度浮点型:double
(3)长双精度浮点型 :long double
  • 布尔型  

布尔类型:_Bool ,是专门表示真假的,整数零表示假,非零值表示真。

_Bool  flag = true ;

bool flag = false;

布尔类型变量的取值是 ture 或者 false,布尔类型的使用需要包含头文件 <stdbool.h>

注意:C语言中使用整数0表示假,非零值表示真.

1.3 各种数据类型的长度

每一种数据类型都有自己的长度,这些类型占据的字节长度是不同的。我们用sizeof操作符来计算这些类型的长度,单位是字节

接下来我们就用sizeof操作符在VS2019 X86配置上 计算数据类型长度:

大家肯定很疑惑为什么 int 类型和 long int类型的长度一样?

这是因为C标准没有具体规定各种类型所占用存储单元的长度,这是由个编译系统自行决定的。C标准只要求 long 型数据长度不短于 int 型,short 型不长于 int 型。即:

sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(long long)

2.常量和变量

2.1常量

在程序运行过程中,其值不能被改变的量称为常量。

常量有以下几种类型:

(1)整型常量。如1235,1000,-329等。

(2)实型常量。

   ①小数形式:2.198,-1.23, 0.64等。

   ②指数形式:12.34e3(代表12.34×10³)等。

(3)字符常量。'a','2','?',用单撇号括起来的一个字符。

(4)字符串常量。"girl","123456",字符串常量是双撇号中的全部字符(不包含双撇号本身" ")。

(5)符号常量:用#define 指令定义的标识符常量。

        #define  PI  3.14159

在文件中从此行开始所有的PI都代表3.14159。在对程序进行编译前,预处理器先对PI进行处理,把所有PI全部置换为3.14159。这种用一个符号名代表一个常量的,称为符号常量。

2.2 变量

在程序运行过程中,经常变化的值称为变量。变量必须先定义,后使用。

2.2-1 变量创建的基本语法:

data_type   name;

数据类型     变量名

例如:

int age;  //整型变量
char ch;  //字符变量
double weight;  //浮点型变量

变量的名字要根据实际情况的需要,起一个有意义的名字。

变量命名的一般规则:

  • 只能有字母(包括大写和小写)、数字和下划线组成
  • 不能以数字开头
  • 长度不能超过63个字符
  • 变量名中区分大小写
  • 变量名不能使用关键字

2.2-2 初始化

变量在创建的时候就给一个初始值,就叫初始化。如果变量不初始化,它里面存放的是随机值,当进行操作时,变化成什么值,我们也是不可控的。

int age = 18;  
char ch = ' y ';  
double weight = 44.2;

这些数据类型可以直接用来定义变量,变量就是可以改变的对象,这些变量的值也是可以修改的,请看下面代码:

2.2-3 变量的分类

全局变量:在大括号外部定义的变量就是全局变量。全局变量的使用范围更广,全局变量的作用域是整个文件。

局部变量:  在大括号内部定义的变量就是局部变量。局部变量的使用范围是比较局限的,只能在自己所在的局部范围内使用。

在第9行定义全局变量,全局变量的作用域是整个文件。 又在第13行定义了局部变量local。

当全局变量和局部变量名字相同时,会怎么样?

程序运行,执行结果如下:

这就说明当局部变量与全局变量同名时,局部变量的值会将全局变量的值覆盖。也就是说当局部变量与全局变量同名时,局部变量优先使用。

2.2-4 变量的存储方式

内存中供用户使用的存储空间可以划分为三个部分:栈区、堆区、静态区。

  • 局部变量是放存在内存的栈区,在调用其所在函数时临时分配存储单元,在函数调用结束后该存储单元就会被马上释放,变量就不存在了。
  • 全局变量是存放在内存党的静区,在程序执行过程中占据固定的存储单元。

作为初学者可能讲解的比较片面,接下来会在逐步学习的过程中再深入讲解,若有错误请指正!今天的学习内容到此结束啦,希望和大家一起进步!

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值