第三章,数据和C

3.1  数据类型关键字

  

 

 

 

 

 位:计算机内部数据存储的最小存储单位(bit)。

字节:计算机中数据处理的基本单位(Byte)),1B=8bit。

 字:计算机进行数据处理时,一次存取,加工和传送的数据长度。(word)。

3.1.1  不同数据类型的表示方法

在printf()中显示

  十进制 二进制 八进制
显示数字 %d %o %ox
显示前缀   %#o %#x()改成X就显示X

 

 

 

数据类型 转换说明
char %c
short %hd
unsigned short %hu
int %d
unsigned int %u
long %l
unsigned long %lu
long long %ll
unsigned long long %llu

 

 

 

 

 

 

 

 

 

 

关于printf(),该语句先将输出发送到一个叫缓冲区的中间储存区域,当储存区满,或遇到换行字符或需要输入时发送输出到屏幕(从缓冲区把数据发送到屏幕或文件的被称为刷新缓冲区)

3.2  char类型

ASCLL码

转义序列

 

 

 3.3  可移植类型:stdio.h和inttypes.h

int32_t:表示有符号的整数类型。为精确宽度整数类型示例。

int_least8_t:表示可容纳8位有符号整数值的类型中宽度最小的类型的一个别名。

最小宽度类型:保证所表示的类型一定是至少有指定宽度的最小整数类型。

int_fast8_t:系统中对8位有符号值而言最快的整数类型别名。

最快最小宽度类型:使计算达到最快的类型集合。

intmax_t:最大有符号整数类型。

3.3  浮点数

float:必须至少能表示6位有效数字,且取值范围至少是10-37~10+37

double:必须至少能表示10位有效数字,编译器假定浮点型常量为double。

打印方法:

%f表示打印10进制计数法的folat类型。(一定要用%lf表示double类型

%e表示打印指数计数法的falat和double

打印long float或long double要用%lf转换说明。

3.4  复数和虚数类型

虚数是可选类型。复数的实部和虚部都是基于浮点类型来构成。

float _complex

double _complex

long double _complex

float  _Imaginary

double _Imaginary

long double _Imaginary

3.5  类型大小

利用sizeof()来查询各数据类型的大小,一定要避免数据出现上溢和下溢。

C99和C11利用%zd来转换说明sizeof的返回类型。

不支持C99和C11的可用%u或%lu。

利用float.h头文件

DBL_MAX  double最大值

DBL_MIN   double最小值

FLT_MAX   float  最大值

FLT_MIN    float  最小值

3.6  编程练习

1.整数上溢即由最大值变为最小值,下溢即由最小值变为最大值。

浮点数上溢下溢如下图。

#include <stdio.h>
#include <float.h>
int main(void)
{
    double max=DBL_MAX;
    double min=DBL_MIN;
    printf("最大值为%e\n",max);
    printf("最大值上溢%e\n",max*2);
    printf("最小值为%e\n",min);
    printf("最小值下溢%e\n",min/2);
    return 0;
}

 

2.输入ASCLL码对应的数值,打印出对应的字符。

#include <stdio.h>
#include <float.h>
int main(void)
{
    char num=0;
    printf("Plese enter the value of ASCLL___");
    scanf("%d",&num);
    printf("The value you input corresponds to ASCLL of %c",num);
    return 0;
}

 

 

 

 4.键入一个浮点数,分别以小数点形式,指数形式,p计数法形式显示。

#include <stdio.h>
#include <float.h>
int main(void)
{
    float num=0;
    printf("Plese enter a float___");
    scanf("%f",&num);
    printf("小数点形式%f,指数形式%e,p计数法式%a",num,num,num);
    return 0;
}

 

5.年龄换算为秒

#include <stdio.h>
int main(void)
{
    long double  age=0;
    long double  second=0;
    printf("Plese enter your age___");
    scanf("%lf",&age);
    second=age*3.156e7;
    printf("second is %e",second);
    return 0;
}

 

6.将输入的夸脱数转化为相应的水分子数量。

#include <stdio.h>
int main(void)
{
    double  quart1=0;
    double  num1=0;
    printf("Plese enter quart___");
    scanf("%lf",&quart1);
    printf("%e\n",quart1);
    num1=(quart1*950)/(3.0*1e-23);
    printf("number of water molecules is %e\n",num1);

}

 

8.

因为以杯作为基准,则会出现整数不够用的情况。

 

posted @ 2020-02-06 17:33  苏文cjp  阅读(140)  评论(0编辑  收藏  举报