提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
数据类型作为C语言的入门章节,数据类型的知识在实际编码的过程中发挥的极大的作用,如果你要想知道变量的定义和变量的引用,那么数据类型会发挥极大的作用。(博主是萌新,所以本文章只讨论在实际学习交流中的心得体会,如有参差,请及时指出,万分感谢)
本章的大致分为;1.数据类型的各种类型
2.数据类型长度及其探索(sizeof探索法)
提示:以下是本篇文章正文内容,下面案例可供参考
一、数据类型是什么?
如果把日常生活中的数归总起来,每种数都有相同的相似的特征与特点,比如整数,小数,正整数,负整数,分数,等等,而具有相似特点的种类的数叫做数据类型。
二、数据类型
1.数据类型的种类
内置类型:
字符型:char
---------------------ASCII码值转译而来,实质是整型(常用ASCII码表见附表1)
整型:short(短整型),int(基本型),long int(长整型),long long int(长长整型)
---------------------对应整数
浮点型:float,double,,long double
-------------------------对应小数
布尔类型(真与假类型): bool(C99之后)/_Bool
---------------------------真与假(true与false)
自定义类型:(本文章重点讨论内置类型,自定义类型暂不做解释)
数组-arr[]
结构体:struct
枚举:enum
联合体:union
2.内置类型的长度
前提引入:sizeof操作符以字节形式给出了其操作数的存储大小,所以可以用来计算各个数据类型的内存占用长度
话不多说,我们用sizeof操作符来探究.
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>int main()
{
printf("char=%zd\n", sizeof(char));//char类型的长度
printf("short=%zd\n", sizeof(short));//short类型的长度
printf("int=%zd\n", sizeof(int));//int类型的长度
printf("long int=%zd\n", sizeof(long int));//long int类型的长度
printf("long long int=%zd\n", sizeof(long long int));//long long int类型的长度
printf("float=%zd\n", sizeof(float));//float类型的长度
printf("double=%zd\n", sizeof(double));//double类型的长度
return 0;
}
运行代码所示:
运行结果
由运行结果展示
char类型的字节长度为1字节
short类型的字节长度为2字节
int类型的字节长度为4字节
long int类型的字节长度为4字节
long long int类型的字节长度为8字节
float类型的字节长度为4字节
double类型的字节长度为8字节
附表1
三.可能的问题???
1.为什么字节的占位符为“%zd”?
解答:首先是因为sizeof的计算结果是size_t类型(c语言专门定义的),而%zd是专门打印size_t类型的。
2.在实际运行过程中,会发现int类型与long int类型的字节长度相同,为什么哪?
解答:因为c语言只规定sizeof(long int)>=sizeof(int),所以在有的编译器中long int 的字节长度为8,有的编译器中,规定long int的字节长度为4,
故:长度的不同是由编译器的差异而产生的
3.sizeof的占位符"%zd"的由来?
解答:当初c语言规定sizeof的返回类型为无符号整数(0和正整数),并没有规定具体的类型,是交给系统去处理的,所以在不同的系统中有可能返回的类型为unsigned int,unsigned long或者是unsigned long long,,对应的printf()占位符分别为%u,%lu,%llu,不利于代码的可移植性。
所以c语言提供了一种解决方案,规定了一种专门的size_t类型,统一表示size_t的返回类型,返回类型可能是unsigned int 或者是unsigned long;