基本数据类型
1. 整型(Integer)
1.1 基本整型类型
int
通常表示一个标准的整型变量,大小和范围依赖于具体的编译器和平台。short
表示较短的整型变量,通常占用 long
表示较长的整型变量,通常占用 long long
表示更长的整型变量,通常占用
1.2 无符号整型类型
unsigned int
无符号整型,表示非负整数,范围从 unsigned short
无符号短整型。unsigned long
无符号长整型。unsigned long long
无符号更长整型。
2. 字符型(Character)
char
用于储存字符(如,字母或标点符号),但是 char
也是整数类型,因为计算机是根据这个整数值,去编码表中找对应的字符。unsigned char
无符号字符类型,范围是 signed char
明确表示带符号的字符类型。
//示例
#include<stdio.h>
int main(void)
{
char c = 'A';
//使用%c来输出char类型的字符
printf("%c",c);
return 0;
}
3. 浮点型(Floating Point)
float
单精度浮点数,通常占用 double
双精度浮点数,通常占用 long double
扩展精度浮点数,通常占用
4. 布尔型(Boolean)
bool
在C99标准中引入,表示布尔类型,值为 true
或 false
。需要加上头文件 #include <stdbool.h>
这是c语言专门的用来表示真和假的类型:true
为真,false
为假
在c语言中,有时也用
5. 数据类型的修饰符
C语言还提供了一些修饰符,用于改变基本数据类型的属性:signed
明确表示带符号类型,可用于整型和字符型。unsigned
明确表示无符号类型,可用于整型和字符型。short
表示较短的整型。long
表示较长的整型或双精度浮点型。
6. 代码示例
#include<stdio.h>
int main(void)
{
//声明一个整型变量num
int num;
//给num变量赋值为10
num = 10;
//输出一个整型变量的值,\n表示换行
printf("%d\n",num);
//输出多个整型变量的值(前后按顺序一一对应)
printf("%d %d\n %d %d",num,num+1,num+2,num+3);
//可以使用sizeof函数来查看一个变量占用的字节数
printf("在我的电脑上,int类型的变量占%d个字节",sizeof(num));
//其他整型实例
short num2 = 133;
long num3 = 61111;
long long num4 = 12345678910111;
/*
打印char或short或int类型的变量,使用%d
打印long类型的变量,使用%ld
打印long long类型的变量,使用%lld
*/
printf("%d %ld %lld",num2,num3,num4);
return 0;
}
7. 数据溢出与截断
数据溢出 是指将一个超出变量所能表示范围的值赋给该变量。在进行运算的时候,有可能会发生溢出或者截断,比如下面这个:
#include <stdio.h>
int main() {
int largeNumber = 300;
char smallNumber = largeNumber; // 截断
printf("%d\n", smallNumber); // 输出44(假设char是有符号的)
return 0;
}
在这个例子中,largeNumber
的值是 char
类型只能表示
数据截断 发生在一个值被赋给一个比它小的类型变量时,超出的部分会被丢弃。(这里的小
是指范围小)
#include <stdio.h>
int main() {
//将一个浮点数1.5赋值给a,因为1.5是浮点数,但是它被赋值给一个整型变量,所以它被自动转换成整数,然后输出
int a = 5.5;
printf("%d\n", a);
return 0;
}
8. 自动类型提升
自动类型提升是指在表达式中,取值范围小(或容量小)的类型会被自动提升为取值范围大(或容量大)的类型。例如,当 int
和 float
一起参与运算时,int
会被升级为 float
。
#include<stdio.h>
int main()
{
double a = 7;//7本来是int类型,当把7赋值给double类型的a的时候,7自动提升为double类型
double c = 5 + 7.7;//当存储范围小的数据类型与存储范围大的数据类型变量一起混合运算时,会按照其中最大的类型运算。
return 0;
}