C语言数据类型

本文讨论了C语言中数据类型的内存问题和转化问题。重点在于数据溢出,通过一个自然数立方和的例子解释了由于数据类型选择不当导致的死循环。还提醒在进行类型转化时,需要注意除法操作中将整型转换为浮点型以获取准确结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

1、数据类型内存问题

2、数据类型转化问题

问题解决:

1、数据类型的内存问题

首先我先把C语言基本数据类型的内存大小列在下方

数据类型所占字节数

char

1
short2

int

float

4
double8

 

 

 

 

 

 

一个字节代表计算机8位二进制,所以读者自行计算各数据类型的取值范围(内存问题的关键所在

数据溢出是数据内存的主要问题,下面通过实例来叙述数据溢出

计算自然数立方和,直到立方和大于等于1000000为止,统计累加的项数

#include<stdio.h>
main(){
    short i,sum = 0;
    for(i = 1;sum < 1000000;i++){
        sum = sum + i*i*i;
    }
    printf("count = %d\n",i);
}

执行结果如下图: 

这个结果代表是在循环中不断的执行,也就是死循环。其实正确的结果是输出count=45,为什么?

这就是因为在申请sum空间时为short类型而short类型为2个字节,取值范围为(-327268~32767),sum发生了数据溢出,导致sum永远也达不到1000000,所以死循环;

所以预估计数据的大小来确定数据的类型至关重要

2、数据类型的转化

类型的转化在科恩都有介绍,这里注意提醒除法时的类型,当int型做除法时,得到的也是int类型。因此当想要计算我们数学中的除法时,要记得将整形int转化为浮点型数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值