C语言的数据类型和变量(1)

阿林说:“学习如逆水行舟,不进则退。”

学习要养成好习惯,先点赞,后观看!

 

目录

1. C语言数据类型介绍

1.1字符型(Character Types):

1.2整形(Integer Types): 

1.3浮点型(Floating Point Types):

1.4布尔类型 

 1.5 sizeof操作符

 2.signed 与 unsigned

3. 数据类型取值范围


1. C语言数据类型介绍

C语言提供了多种数据类型,用于存储不同类型的数据。如:整形浮点型字符型布尔类型,void类型等。上图片:

简单的说,整形用来描述整数浮点型用来描述小数字符型描述字符布尔类型描述真假;等等。接下来一一介绍:

1.1字符型(Character Types)

char :通常用于存储字符,如'a','@',可叫做char类型,占用1个字节的内存空间。

char                   //有符号字符型  

[signed] char     //有符号字符型,signed表示有符号

unsigned char   //无符号字符型,unsigned表示无符号

注:方括号表示可省略

1.2整形(Integer Types): 

int: 通常用于存储整数,如-1,0,1,一般称为整形,占用4个字节的内存空间。

int                    //有符号整形

[signed] int      //有符号整形

unsigned int    //无符号整形

注:方括号表示可省略

short int 或 short: 用于存储较小的整数,如-1,0,1,一般称为短整型,占用2个字节的内存空间。

short                           //有符号短整型

short [int]                    //有符号短整型

[signed] short [int]      //有符号短整型

unsigned short [int]    //无符号短整型

long int 或 long: 用于存储较大的整数,如-1,0,1,一般称作长整形,占用4个字节的内存空间。

long                              //有符号长整形

long [int]                       //有符号长整形

[signed] long [int]         //有符号长整形

unsigned long [int]       //无符号长整形

long long int 或 long long: 用于存储更大的整数,如-1,0,1,更长的整形,占用4个字节或8个字节的内存空间。(这里占用内存的大小取决于处理器CPU,若是64位处理器,即x64,占用8个字节的内存;若是32位处理器,即x86,占用4个字节的内存。)

long long                             //有符号更长的整形

long long [int]                      //有符号更长的整形

[signed] long long [int]        //有符号更长的整形

unsigned long long [int]      //无符号更长的整形

1.3浮点型(Floating Point Types)

float, 用于存储含小数的数,有单精度浮点型、双精度浮点型之分。

float                //单精度浮点型,可存储小数点后6位,占用4个字节的内存空间

double            //双精度浮点型,可存储小数点后12位,占用8个字节的内存空间

long double    //用于存储扩展精度浮点数,占用8个字节的内存空间

浮点型变量在运算时必须要有写出小数点后 ,如:

float a = 1.0

float b = a / 1.0

1.4布尔类型 

原来c语言中没有单独设置这个类型,C99后设置这个为单独类型, ,布尔类型专门用来表示真假

有两种写法:_Bool或bool 

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

#include<stdbool.h>

#define  false 0   //零为假,非零为真

#define  true  1 

布尔类型的使用如下: 

#include<stdio.h>
#include<stdbool.h>
int main()
{
	_Bool star = true;
	if (star)
	{
		printf("正确\n");
	}
	return 0;
}

 运行结果:正确

 1.5 sizeof操作符

在C语言中,sizeof是一个运算符(而非函数),用于获取数据类型或对象在内存中的大小(以字节为单位)。sizeof返回值是一个size_t类型的值,该类型在头文件<stddef.h>中定义,通常是一个无符号整数类型,能够容纳对象的大小。

 sizeof如何使用呢?

1.sizeof( 类型 )     //一种用法是在后面用括号,括号里是某一种类型

2.sizeof 表达式     //另一种用法是后面接表达式,可以是函数等

#include<stdio.h>
int main()
{
	int n = 1;
	printf("%zd\n", sizeof(n));
	printf("%zd\n", sizeof n);
	return 0;

因为n是int类型变量,前面我们讲过,int类型的变量占用4个字节的内存空间 

(这里的%zd是一个占位符,用来接收sizeof的返回值)

运行结果:4

                  4 

 学习了sizeof运算符后,就可以检验前面所说的各种类型的所占空间的大小了

#include<stdio.h>
int main()
{
	printf("%zd\n", sizeof(char));
	printf("%zd\n", sizeof(_Bool));
	printf("%zd\n", sizeof(short));
	printf("%zd\n", sizeof(int));
	printf("%zd\n", sizeof(long));
	printf("%zd\n", sizeof(long long));
	printf("%zd\n", sizeof(float));
	printf("%zd\n", sizeof(double));
	printf("%zd\n", sizeof(long double));
	return 0;
}

 在VS2022,x64下,运行代码:

 

 另外,还需要注意的是,sizeof()中的内容,不会真实计算

#include<stdio.h>
int main()
{
	int a = 1;
	printf("%zd\n", sizeof(a = a + 1));
	printf("%d\n", a);
	return 0;
}

若a = a + 1进行计算,那么,a就因该是2,而我们可以看到,a的值还是1 ,说明sizeof中的内容不会进行计算,为什么呢?

因为在C语言中,sizeof运算符在编译时计算,因此它返回的是数据类型或对象在编译时可见的大小。 编译时sizeof就有了返回值,所以sizeof后接的内容在真正运行前就结束了,不会进行计算

 2.signed 与 unsigned

 C 语⾔中使⽤ signed 和 unsigned 关键字来修饰字符型和整型类型。 signed 这个关键字,表⽰⼀个类型带有正负号,包含负值; unsigned 关键字,用来表⽰该类型不带有正负号,只能表⽰零和正整数。 对于 int 类型,默认情况是带有正负号的,也就是说 int 等同于 signed int ,所以关键字 signed ⼀般都省略不写,写了也不算是错误的。

需要关注的是,C 语⾔规定 char 类型默认是否带有正负号,是由当前系统决定的。

3. 数据类型取值范围

每一种类型在内存中所占用的空间是一定的,也就是说,每一种类型都有其取值范围,而limits.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 的最⼤值

最后, 

阿林说:“学习要循循渐进,不能一蹴而就。” 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值