【C语言】数据类型、变量、强制类型转换

目录

一、数据类型

1.1数据类型的介绍

1.2各种数据类型的⻓度

1.3数据类型⻓度(sizeof操作符计算类型长度)

1.4数据类型的取值范围

二、变量及常量

2.1变量

2.1.1创建

2.1.2变量的分类

2.1.3全局变量和局部变量在内存中存储的位置

2.2常量

2.2.1 字面常量

2.2.2 const修饰的常变量

2.2.3 #define定义的标识符常量

2.2.4 枚举常量

三、强制类型转换


一、数据类型

1.1数据类型的介绍

字符型
char
[ signed ] char
unsigned char
整型
// 短整型
short [ int ]
[ signed ] short [ int ]
unsigned short [ int ]
// 整型
int
[ signed ] int
unsigned int
// ⻓整型
long [ int ]
[ signed ] long [ int ]
unsigned long [ int ]
// 更⻓的整型
//C99 中引⼊
long long [ int ]
[ signed ] long long [ int ]
unsigned long long [ int ]
浮点型
float
double
long double
布尔类型
C 语⾔原来并没有为布尔值单独设置⼀个类型,⽽是使⽤整数 0 表⽰假,⾮零值表⽰真。
C99 中也引⼊了 布尔类型 ,是专⻔表⽰真假的。
1 _Bool
布尔类型的使⽤得包含头⽂件 <stdbool.h>
布尔类型变量的取值是:true或者false

1#define bool _Bool

2

3#define false 0

4 # define true 1
代码演示:

 

1.2各种数据类型的⻓度

        每⼀种数据类型都有⾃⼰的⻓度,使⽤不同的数据类型,能够创建出⻓度不同的变量,变量⻓度的不 同,存储的数据范围就有所差异。

数据类型                         32位              64位            打印格式
char    字符数据类型      1字节            1字节            %c、%s
short           短整型         2字节            2字节                    %d
int                 整型           4字节            4字节                    %d
long           长整形          4字节   4字节(linux为8字节) %ld
long long    长长整形      8字节            8字节                  %lld
float       单精度浮点型    4字节            4字节                    %f
double   双精度浮点型   8字节             8字节                   %lf
 
各数据类型的大小及取值范围可参照此处: C语言各数据类型大小和取值范围_c语言数据类型大小-CSDN博客
各数据类型的长度计算方式:
在VS2022 X64配置下的输出:

1.3数据类型⻓度(sizeof操作符计算类型长度)

sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算sizeof操作符数的类型⻓度的,单位是字节。
sizeof 操作符的操作数可以是类型,也可是变量或者表达式。
sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的。
sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出⼤⼩。
sizeof 的计算结果是 size_t 类型的。
        📌 sizeof 运算符的返回值,C 语⾔只规定是⽆符号整数,并没有规定具体的类型,⽽是留给
系统⾃⼰去决定, sizeof 到底返回什么类型。不同的系统中,返回值的类型有可能是
unsigned int ,也有可能是 unsigned long ,甚⾄是 unsigned long long
对应的 printf() 占位符分别是 %u %lu %llu 。这样不利于程序的可移植性。
C 语⾔提供了⼀个解决⽅法,创造了⼀个类型别名 size_t ,⽤来统⼀表⽰ sizeof 的返
回值类型。对应当前系统的 sizeof 的返回值类型,可能是 unsigned int ,也可能是
unsigned long long
比如:

1.4数据类型的取值范围

   其实每⼀种数据类型有⾃⼰的取值范围,也就是存储的数值的最⼤值和最⼩值的区间,有了丰富的类 型,我们就可以在适当的场景下去选择适合的类型。如果要查看当前系统上不同数据类型的极限值:
limits.h ⽂件中说明了整型类型的取值范围。
float.h 这个头⽂件中说明浮点型类型的取值范围。
为了代码的可移植性,需要知道某种整数类型的极限值时,应该尽量使⽤这些常量。
SCHAR_MIN SCHAR_MAX :signed char 的最⼩值和最⼤值。
SHRT_MIN SHRT_MAX :short 的最⼩值和最⼤值。
INT_MIN INT_MAX :int 的最⼩值和最⼤值。
LONG_MIN LONG_MAX :long 的最⼩值和最⼤值。
LLONG_MIN LLONG_MAX :long long 的最⼩值和最⼤值。
UCHAR_MAX :unsigned char 的最⼤值。
USHRT_MAX :unsigned short 的最⼤值。
UINT_MAX :unsigned int 的最⼤值。
ULONG_MAX :unsigned long 的最⼤值。
ULLONG_MAX :unsigned long long 的最⼤值。

二、变量及常量

2.1变量

2.1.1创建

变量在创建的时候就给⼀个初始值,就叫初始化。
1    data_type name;
2          |              |
3         |              |
4 数据类型     变量名

2.1.2变量的分类

全局变量:在⼤括号外部定义的变量就是全局变量
局部变量:在⼤括号内部定义的变量就是局部变量
注意 :当局部变量和全局变量同名的时候,局部变量优先使⽤。
打印的结果为 “10”

2.1.3全局变量和局部变量在内存中存储的位置

内存中的三个区域:栈区、堆区、静态区
1. 局部变量是放在内存的栈区
2. 全局变量是放在内存的静态区
3. 堆区是⽤来动态内存管理的 (还没学。后期补)

2.2常量
 

(摘抄自-蒋灵瑜的笔记本)

2.2.1 字面常量


例:3.14、100、‘w’、"abc"等
strlen求字符数组的长度


字符串的结束标志是转义字符’\0’,strlen遇到’\0’即返回。

2.2.2 const修饰的常变量

例:const int a=100;//在C语言中,const修饰的a,本质是变量,但是不能直接修改,有常量的属性。

2.2.3 #define定义的标识符常量

例:#define MAX 1000
#define STR “abcd”

2.2.4 枚举常量

三、强制类型转换

在操作符中还有⼀种特殊的操作符是强制类型转换,语法形式很简单,形式如下
(类型)
//请看代码:
int a = 3.14;//a的是int类型, 3.14是double类型,两边的类型不⼀致,编译器会报警告
//为了消除这个警告,我们可以使⽤强制类型转换:
int a = (int)3.14;//意思是将3.14强制类型转换为int类型,这种强制类型转换只取整数部分
强制类型转换都是万不得已的时候使用,如果不需要强制类型转化 就能实现代码,⾃然更好。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尚尚.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值