从“Hello World”开始学习C语言(十四):基础进阶——数据类型

我们在原来初步了解C语言的基础上,上一篇文章介绍标识符和常量,相信大家对标识符的命名已经有了较深入的认识,那么本篇文章我们来认真讨论下C语言的数据类型。

	我们知道计算机处理的对象最终都是数据
	那么C语言中数据该如何表示呢?
	数据都有什么类型?
	数据在计算机里如何存储呢?

1. 数据类型的定义

数据类型是编程语言中用来定义数据的特性和约束的一种概念。它决定了数据所占用的内存大小,数据的取值范围,以及可以对数据执行的操作

在计算机中,所有数据都以二进制形式存储。数据类型定义了如何将二进制表示转换为不同的数据类型,并规定了对数据进行操作的规则和限制。通过使用不同的数据类型,程序可以有效地管理和操作内存中的数据。

2. 数据类型的分类

在这里插入图片描述
本文主要对基本类型(整型、字符型、浮点型)进行详细讲解,复合类型和指针类型在后面的文章中会逐个深入学习。

3. 基本类型

3.1 整型

整型。用来存储整数的类型,如1、32、49等。整型包括了以下 3 种数据类型:

  • 短整型,short,所占存储空间大小为2个字节,存储的数字范围在-215 ~ 215-1。

  • 整型,int,所占存储空间大小为4个字节,存储的数字范围在-231~ 231-1。

  • 长整型,long,所占存储空间大小为4个字节,存储的数字范围在-231 ~ 231-1。

#include <stdio.h>

int main() {
    
    printf("sizeof(int) = %d\n", sizeof(int));
    printf("sizeof(short) = %d\n", sizeof(short));
    printf("sizeof(long) = %d\n", sizeof(long));
    printf("sizeof(long long) = %d\n\n", sizeof(long long));
    
    short shortNum = 20;
    int   intNum = 200;
    long  longNum = 400;

    printf("短整型 \t%d\n",shortNum);
    printf("整型 \t%d\n",intNum);
    printf("长整型 \t%d\n",longNum);
   
    return 0;
}

这是在我的电脑上显示的整型类型的数据大小以及应用举例,结果如下:
在这里插入图片描述
sizeof函数:返回对象或者类型所占内存的字节数。

3.2 字符型

字符型。用来存储字符的类型,如’a’,‘B’,‘#’,'%'等。
字符型只占一个字节,一个字节通常由8位二进制数组成,可以表示256个不同的数值,范围从0到255。

#include <stdio.h>

int main() {
    
    printf("sizeof(char) = %d\n", sizeof(char));

    char charAlphabet = 'a';
    char charNum = 65;
    char charSymbol = '%';

    printf("字母 \t%c\n",charAlphabet);
    printf("数字 \t%c\n",charNum);
    printf("符号 \t%c\n",charSymbol);

   
    return 0;
}

结果如下:
在这里插入图片描述

通过这个例子大家可发现什么问题?

  1. 我把一个数值给了char类型,竟然可以返回一个字母
  2. 只有八位的存储空间,如何区分字符和字母的?

事实上,C语言内部存储的字符型就是一个数字,这个数字只有八位 ,通过查询ASCII码表,将数字对应的字符表示出来的,所以我们给一个合适的整数也能够正常打印出对应的字符,比如例子中的 65 表示成了A

3.3 浮点型

浮点型。用于存储小数/浮点数的类型,比如3.1314、1.25、7.85等
因为精度的不同又分为3种(float,double,long double):

  • 单精度型,float,所占存储空间大小为4个字节,取值范围是-3.4×10-38~3.4×10+38
  • 双精度型,double,所占存储空间大小为8个字节,取值范围是-1.7×10-308~1.7×10308
  • 长双精度,long double,所占存储空间大小为16个字节,取值范围是-1.2×10-4932~1.7×104932
#include <stdio.h>

int main()
{

    printf("sizeof(float) = %d\n", sizeof(float));
    printf("sizeof(double) = %d\n", sizeof(double));
    printf("sizeof(long double) = %d\n", sizeof(long double));

    float floatNum = 3.1415;
    double doubuleNum = 6.34312324;

    printf("单精度型 \t%f\n",floatNum);
    printf("双精度型 \t%f\n",doubuleNum);

    return 0;
}

结果如下:
在这里插入图片描述
为啥单精度补了好多个0在后面? 又为啥双精度被截断了?在格式化输出的文章里我们再详述

3.4 布尔型

布尔型。表示真或假的类型,比如true、false。
为啥需要这么个数据类型? 因为逻辑判断,条件控制比较方便。

C 语言标准(C89)没有定义布尔类型,所以 C 语言判断真假时以 0 为假,非 0 为真。

C 语言标准(C99)提供了_Bool 型,但_Bool只能赋值为 0 或 1 。所有非 0 的值都会存储为1 。(如果想使用true和false,只能使用头文件 <stdbool.h> 定义的 bool 类型 )

#include <stdio.h>

int main()
{
    printf("sizeof(_Bool) = %d\n", sizeof(_Bool));

    _Bool Key = -1;  // 只能使用整数赋值,且0为0,非0为1

    if(Key){
        printf("成功了!");
    }else{
        printf("失败了!");
    }

    printf("\n_Bool的值:%d\n",Key);

    return 0;
}

结果为:
在这里插入图片描述

#include <stdio.h>
#include <stdbool.h>

int main()
{
    printf("sizeof(bool) = %d\n", sizeof(bool));

    bool Key = true;  

    if(Key){
        printf("成功了!");
    }else{
        printf("失败了!");
    }

    printf("\nbool的值:%d\n",Key);

    return 0;
}

结果为:
在这里插入图片描述

总结

通过本篇文章,我们较深入的讨论了C语言中的数据类型,并对基本的四种数据类型(整型,浮点型,字符型,布尔型)做了较深入的解释和举例。相信通过本篇的学习,你已经为后续知识打下了坚实的基础,任何复杂的事物都是从简单开始的,四种基本数据类型是以后学习其他复杂结构的基础,计算机就是操作数据的,数据类型就是基础。

下篇文章我们将详细介绍格式化输出,数据类型有了,怎么随心所欲打印出自己想要的结果就很重要了,期待下一篇文章能够与大家讨论清楚这个问题!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值