C语言——基本数据类型

基本数据类型介绍:

C语言提供了许多数据类型来描述生活中的各种数据,小数有浮点数类型,整数有整型,字符有字符串类型。只有写清了数据的类型,编译器才可以更好的帮我们处理数据,不会出现截断或者溢出。

下面盘点一下C语言中常用的内置数据类型:

声明数据类型的方法:

  • 字符串

    	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]; 

        上图中 [  ] 标注部分为可省略部分,可以看出,数据在声明是默认为有符号,无符号和有符号的区别在于无符号的第一位不再作为符号位,数据使用范围与有符号不一样。有符号和无符号的可以使用 signed unsigned 声明;

  • 浮点数

    	float;  //单精度浮点型
    	double;  //双精度浮点型
    	long double;

        有无符号与整型同理。

  • 布尔类型

#include <stdbool.h>
#include <stdio.h>
int main()
{
	_Bool flag = true;
	if (flag){
		printf("I like you");
	}
	return 0;
}	

        c语言中原来使用整数 0 来表示假,非 0 来表示真,没有专门的类型来判断真假。在C99中引入了布尔类型来专门表示,使用前需要加入头文件 <stdbool.h> 

数据类型的长度:

        每一种数据类型都有长度,长度不同,占用的内存与可用的数据范围也不同。

        sizeof操作符:

                sizeof 是一个关键字,也是一个操作符,可以计算数据类型的长度,单位为字节(Byte)。

                sizeof 操作符的操作数既可以是类型也可以是表达式

	sizeof(类型)
	sizeof 表达式

                sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的;

                sizeof 的计算结果是 size_t 类型的,占位符用 %zd

                下图是各类型的长度:

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

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

#include <stdio.h>
int main()
{
	int a = 2;    //4
	short b = 3.5;   //2
	printf("%zd\n", sizeof(a / b));  //输出结果4

	return 0;
}

### C语言基本数据类型及其取值范围 #### 整型数据类型 整型数据类型包括`char`, `short`, `int`等,在不同的编译器和平台上可能会有所不同,但在常见的32位或64位系统上通常如下: - **char**: 字符型变量占用1字节(8位),其取值范围是从-128到127(对于带符号字符)或是从0到255(对于无符号字符)。这取决于具体实现环境[^1]。 - **short int (简称 short)**: 短整形一般占两个字节(16位),可以表示的数值区间大约为−32,768至32,767;如果是unsigned,则能表达更大的正数范围即0~65,535。 - **int**: 普通整数通常是四个字节长(32位),能够覆盖更宽泛的负数到正数区域约±2,147,483,647。当声明成unsigned时则可达到0~4,294,967,295之间的任何正值。 #### 浮点型数据类型 浮点数用于处理实数,并且遵循IEEE 754标准来定义它们内部如何被编码保存于内存之中[^3]: - **float**: 单精度浮点数占据四字节空间(32位),它提供了大约六七位十进制有效数字精度,指数部分允许的最大绝对值约为\( \pm 3.4\times10^{38} \)[^3]。 - **double**: 双精度浮点数则是八字节大小(64位),拥有更高的准确性——大概十五十六位有效的十进制小数,而指数范围也扩大到了接近 \( \pm 1.7\times10^{308}\) 的程度。 通过使用`<limits.h>`头文件中的宏常量可以获得特定平台上的确切边界值,比如`CHAR_MIN`, `INT_MAX`等等。另外也可以利用预处理器指令`sizeof()`函数配合乘法运算得出各类型的长度单位是bytes而不是bits[^2]。 ```cpp #include <stdio.h> #include <limits.h> int main() { printf("Size of char : %lu bytes\n", sizeof(char)); printf("Range of signed char: [%d to %d]\n", CHAR_MIN, CHAR_MAX); // 更多其他类型... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值