C语言数据类型和变量

本文详细介绍了C语言中的数据类型分类(内置与自定义),重点讲解了字符型、整型、浮点型、布尔类型及sizeof操作符的使用。此外,还涵盖了变量的创建、signed与unsigned的区别,以及算术和单目操作符的介绍,为初学者提供了全面的基础知识指南。
摘要由CSDN通过智能技术生成

本篇博客,将为大家介绍C语言中的数据类型和变量,希望可以为大家提供帮助。

1.数据类型介绍

首先,大家应该来了解数据类型的分类

数据类型分为内置类型和自定义类型,其中作为初学者的话,内置类型是我们优先学习的,

它包括字符型、整型、浮点型以及布尔类型(这里说明一下,布尔类型是C99之后出现的内置类型);下面,为大家介绍一些常见的自定义类型,它们分别是,数组、结构体、联合体和枚举,其中数组和结构体的内容最为关键,在后面数据结构的学习中,结构体的相关内容运用广泛,所以大家在学习这部分的内容时,要注重对其的理解。OK,上面为大家简单地介绍了一下数据类型的相关分类,总结请看下图。

1.1字符型

(signed)char

unsigned char

1.2整型

(signed)short

unsigned short

(signed)long

unsigned long

(signed)int

unsigned int

1.3浮点型

float

double

long double

1.4布尔类型

_Bool

这里需要注意,布尔类型的使用要包含在<stdbool.h>这个头文件中!

布尔类型的取值为true或false。

说到这里,想必大家已经对C语言的数据类型种类有了一定了解。这里,肯定会有人提出疑问,这些数据类型在内存中的空间大小分别是多少呢?下面,将为大家介绍一个操作符,它可以帮助我们求出各个数据类型的长度。

1.5 sizeof操作符

1.5.1 相关概念

sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算sizeof的操作符数的类型⻓度的,单位是

sizeof 操作符的操作数可以是类型,也可是变量或者表达式。

sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出大小。

sizeof 的计算结果是 size_t 类型的。(这里注意,结果是size_t类型,意味着sizeof计算出的结果不能出现负数)

1.5.2 下面实现求出各个数据类型的长度

上图是使用VS2022的编译环境求出的各个数据类型的长度,仅供参考。

这里还需要说明一点,在打印size_t类型的结果时,最好使用"%zd"进行打印。

1.5.3 sizeof中的表达式不参与计算

前面说到,sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出大小。

下面通过代码为大家验证这一结论,请看下图

通过上图,大家应该理解了为什么说sizeof中的表达式不计算。代码中变量s为short类型的变量,所以不管后面的表达式计算什么,都不影响最终结果。当然,看到s=2后,想必你也了解到,那个表达式根本就没有执行,s的值依旧说初始化时的值。

2.signed与unsigned

signed和unsigned是两个关键字,被用来修饰整型和字符型

这两个关键字存在一定的区别,其中

signed 关键字,表⽰⼀个类型带有正负号,包含负值;

unsigned 关键字,表⽰该类型不带有正负号,只能表⽰零和正整数。

对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int 。

这里需要注意,C 语⾔规定 char 类型默认是否带有正负号,由当前系统决定。 这就是说, char 不等同于 signed char ,它有可能是 signed char ,也有可能是 unsigned char 。 这⼀点与 int 不同, int 就是等同于 signed int 。

3.变量

3.1变量的创建

变量的创建很简单,如下

以上就是创建变量的方式;

在我们创建变量的时候,我们应养成良好的习惯,那就是对创建的变量进行初始化,初始化的方法也很简单

上图展示了一些常用变量的初始化,相信大家已经掌握了初始化的方法。

3.2变量的分类

C语言中的变量分为全局变量和局部变量

全局变量:在⼤括号外部定义的变量就是全局变量;

局部变量:在⼤括号内部定义的变量就是局部变量;

对于全局变量和局部变量的概念,大家应该理解

同时,这里有一个问题,有一次我在看同学的代码时,看到下面一段代码

大家可以猜一下上面的代码运行结果是什么,上面的代码中全局变量和局部变量的名字相同,那么这个时候应该用哪个呢?请看下面的运行结果

可以看到,打印的是10,到这里,想必你的心中已经有了答案。

当全局变量和局部变量同名时,局部变量优先

说到这里,可能有的同学想了解这些变量在内存中的什么位置存储,这里拓展一下,

局部变量是放在内存的栈区

全局变量是放在内存的静态区

堆区是⽤来动态内存管理的

4.算术操作符

4.1 +和-

+和-都是有两个操作数,它们都是双目操作符。

4.2 *和/

*和/也都是双目操作符,它们的使用都很简单。

其中需要注意,"/"运算进行的是整除运算;

其次,如果想要得到浮点数的结果,两个运算数至少有一个要为浮点数。

4.3 %运算

"%"运算只用于整数,不能用于浮点数

说到这儿,相信可能有不少同学被负数取模运算的方法困扰过;

在这里,说明一下负数取模运算的规则:结果的正负号由第⼀个运算数的正负号决定。

5.单目操作符

5.1 ++和--

++和--分别是自增和自减操作符,它们分别有前置的和后置的,详细内容请看下文。

5.1.1 前置++

含义:先+1,后使用

请看下面的代码

通过上面的代码,大家可以看到,前置++的用法,注释掉的代码就是它的等价代码,它们表达的含义一样,便于大家理解。

5.1.2 后置++

含义:先使用,后+1

请看下面的代码

在上面的代码中,我们可以看到,先将a的值赋给了b,然后再对a进行自增,所以结果为a==11,b==10。

5.1.3 前置--

含义:先-1,后使用

同上,咱们通过代码来理解它,请看

想必大家很容易就理解了上面的代码,与++操作符是类似的

5.1.4 后置--

含义:先使用,后-1

这里就不作赘述了,想必大家通过前面几个操作符的类比学习,可以轻松理解上面的代码。

6.总结

本篇博客主要为大家介绍了以下内容,它们包括数据类型的介绍、signed与unsigned、变量、算书操作符、单目操作符。希望上面的内容可以为大家带来帮助,如有错误,欢迎大家评论指教,谢谢!

  • 38
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值