C语言数据类型

问题描述:

1、数据类型内存问题

2、数据类型转化问题

问题解决:

1、数据类型的内存问题

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

数据类型 所占字节数

char

1
short 2

int

float

4
double 8

 

 

 

 

 

 

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

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

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

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

执行结果如下图: 

C语言数据类型_第1张图片

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

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

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

2、数据类型的转化

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

你可能感兴趣的:(C语言)