C语言数据类型还有哪些搞不明的

 更新时间:2026年05月13日 10:01:17   作者:菊花花生油456  
C语言的数据类型是理解C语言编程的基础,它们决定了变量的存储方式以及可以进行哪些操作,本文给大家介绍C语言数据类型相关知识,感兴趣的朋友一起看看吧

数据类型的介绍

在C语言中有丰富的数据类型描述现实中的数据

C语言将我们平时日常生活中的数据分成三种:整形类型 字符类型 浮点类型

  • 整形类型

整形类型从名字可以联想到什么?
整形
对就是这样
在C语言中使用int表示整形类型,(源于整形的英文单词integer)

//短整型
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] 
  • 字符类型
    字符包括字母,文字,符号等等都是字符
    在C语言中用char表示(源于英文字母character)
char
[signed] char
unsigned char
  • 浮点类型
    小数点的浮动浮点类型
float
double
long double  
  • 布尔类型
    区别于其他类型,是用来判断真假的一种类型
    C语言中原来并没有为布尔值单独设置一个类型,而是使用0表示假,非零表示真
    在C99中引用布尔类型:true或者false
#define bool _Bool
#define false 0 //假
#define true 1 //真

代码演示

_Bool flag = true;
if (flag)
printf ("i like C\n"0);

这时候有人有疑问了这个intchardouble我都知道了,但是这个signedunsigned还有long是什么意思,咋突然就出现了
首先我们来说一下long
这时候大家就要知道一个东西,每种数据类型都有自己的长度,接下来我们详细说一下

各种数据类型的长度

每一种数据类型都有自己的长度,占用的内存空间不同,使用合适的类型长度能够节省内存空间,加大开发效率

  • sizeof操作符
    sizeof是一个关键字,也可以是操作符,是用来专门计算类型长度的,单位是字节
    接下来我们来看一下这些数据类型的具体长度
#include <stdio.h>
int main()
{
printf ("%zu\n",sizeof(_Bool));
printf ("%zu\n",sizeof(char));
printf ("%zu\n",sizeof(short));
printf ("%zu\n",sizeof(int));
printf ("%zu\n",sizeof(long));
printf ("%zu\n",sizeof(long long));
printf ("%zu\n",sizeof(float));
printf ("%zu\n",sizeof(double));
printf ("%zu\n",sizeof(long double));

在VS2022 X64配置下的运行结果为:

1
1
2
4
4
8
4
8
8

另外还有一个表示长度的单位比字节更小,就是比特
1字节=8比特
由此我们可以的得到每个数据类型的长的度,这时候有的人可能会发现自己得出的结果不一样
这是因为C语言规定sizof(long)>=sizof(int)所以有的配置环境下的结果是8
sizeof(long double)>=sizeof(double)也是这样了,在有些配置下的的结果是16

sizeof的操作符的操作数可以是类型,也可以是变量或者表达式,后面跟的是表达式的时候,括号可以去掉,

sizeof(类型)
sizeof 表达式

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

#include <stdio.h>
int mian()
{
short s = 12;
int b = 10;
prinrf("%zu\n",sizeof(s = b + 1 ));
printf("s = %d\n",s);
return 0;
}

运行结果为

2
s = 12

为什么呢?
首先无论等号后面的数字有多么大他都要放在这个short的这个空间里面,这个空间的字节大小是21的数据类型是int,b的类型也是int表达式不参与运算,等号右边的类型是int,但int这个类型的长度是4不够存放就直接截去,所以是2
12由于sizeof后面的表达式不参与计算所以依然是12

signed 和 unsigned

C语言使用signedunsigned关键字修饰字符型和整型类型的
signed表示类型整形带有正负号和零
unsigned表示整形正整数和零
对于int类型,默认是带有正负号的也即是说signed int等同于sgned int

signed int a;
//等同于int a;

想要只表示负数就要加unsigned声明变量

unsigned int a;

声明变量的好处是同样长度的内存能够表示的最大整数类型扩大一倍
比如,16位的signed short int 的取值范围是:-32768~32767,最大是32767;而unsigned short int的取值范围是:0~65535,最大值增加到了65535。32位的siggned int的取值范围可以参考limits.h中给的相关定义。
下面是在VS2022环境中,limits.h中的相关定义

#define SHRT_MIN   (-32768)   //有符号16位整型的最小值
#define SHRT_MAX    32767     //有符号16位整型的最大值
#define USHRT_MAX   0xfff     //无符号16位整型的最大值
#define INT_MIN     (-2147483647  -1)     //有符号整型的最小值
#define INT_MAX     2147483647    ///有符号整型的最大值

unsigned int里面的int可以省略,所以也可以写成

unsigned a;

字符类型char也有signedunsigned

signed char c;//范围为-128到127
unsigned char c;//范围为0到255

注意,C语言规定char类型默认是否包括符号是由当前系统决定的
所以char不等同与signed char,可能是signed char也可能是unsigned char
这一点区别于int

到此这篇关于C语言数据类型还在搞不明白?的文章就介绍到这了,更多相关C语言数据类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言简易扫雷游戏

    C语言简易扫雷游戏

    这篇文章主要为大家详细介绍了C语言简易扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • C/C++实现快速排序的方法

    C/C++实现快速排序的方法

    这篇文章主要介绍了C/C++实现快速排序的方法,这几天在找工作,被问到快速排序,结果想不出来快速排序怎么弄的;回来搜索了一下,现在记录下来,方便以后查看。
    2014-12-12
  • C++中值传递时触发拷贝构造函数的完整过程

    C++中值传递时触发拷贝构造函数的完整过程

    本文详细介绍了C++中值传递时触发拷贝构造函数的完整过程,包括触发拷贝构造的时机、过程本质以及如何避免触发拷贝构造,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • c++如何控制对象的创建方式(禁止创建栈对象or堆对象)和创建的数量

    c++如何控制对象的创建方式(禁止创建栈对象or堆对象)和创建的数量

    这篇文章主要介绍了c++如何控制对象的创建方式和创建的数量,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • 最新C语言中getchar的使用

    最新C语言中getchar的使用

    getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab) ,getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,本文给大家介绍getchar的使用,感兴趣的朋友跟随小编一起看看吧
    2022-12-12
  • 使用C语言绘制柱形图的示例代码

    使用C语言绘制柱形图的示例代码

    常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图,这篇文章主要为大家介绍了C语言中绘制条形图和柱形图的方法,需要的可以参考下
    2024-02-02
  • 推箱子游戏C语言实现代码

    推箱子游戏C语言实现代码

    这篇文章主要为大家详细介绍了推箱子游戏C语言实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • C++学习之IO流(输入输出流)详解

    C++学习之IO流(输入输出流)详解

    流是一种抽象概念,它代表了数据的无结构化传递。而用来进行输入输出操作的流就称为IO流。这篇文章主要为大家介绍了C++中IO流的使用详解,需要的朋友可以参考一下
    2021-12-12
  • C语言实现学生个人消费管理系统

    C语言实现学生个人消费管理系统

    这篇文章主要为大家详细介绍了C语言学生个人消费管理系统开发,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Qt带参数的信号和槽函数举例详解

    Qt带参数的信号和槽函数举例详解

    信号槽的设计旨在实现控件和处理逻辑的解耦合,但在实际开发中,一对一的关系更为常见,这篇文章主要介绍了Qt带参数的信号和槽函数的相关资料,需要的朋友可以参考下
    2025-03-03

最新评论