C语言基本数据类型的类型与基本数据类型的长度

本文介绍了C语言中的数据类型概念,包括内置类型如字符、整型、浮点型和布尔类型,以及sizeof操作符用于测量不同类型数据在内存中的占用长度。文中解答了关于sizeof占位符和int与longint字节长度相同原因的问题。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

数据类型作为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;

  • 34
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值