##使用浮点数 浮点数包含的值带小数点,也可以表示分数和整数
下面是一些浮点数
1.6
、0.00008
、7655.899
、100.0
用指数和C语言来表示
1.6
== 0.16E1
E
代表10,1
代表1次方
###定义浮点数变量
<!-- lang: cpp -->
/*
float类型占用4字节,精确到6至7位小数,小数后面加f
double类型占用8字节,精确到15位小数
long double类型占用12字节,精确到18位小数,小数后面加L
*/
int main(){
float aa = 45.0f;
float bb = 7.0f;
printf("aa/b=%f\n",aa/bb); //6.428571
return 0;
}
###控制输出中的小数位数
<!-- lang: cpp -->
//%.2f中的.2说明控制小数位后面为2位,设置成.0f代表后面没有小数位数
printf("aa/bb=%.2f",aa/bb); //6.42
###控制输出的字段宽度
<!-- lang: cpp -->
//输出的字段宽度是输出值所使用的总字符数(包括空格)
//指定宽度时,数值默认是右对齐,如果希望左对齐,只需要在%的后面添加一个负号
printf("aa/bb=%5.3f",aa/bb);
###运算的顺序
<!-- lang: cpp -->
//它的计算顺序是
//先计算最内层的括号,即5+4
//然后是先乘除后加减,即9*3,然后27+3
//最后2*30 = 60
2*(3+3*(5+4)) = 60
###利用输入的直径计算周长和面积
<!-- lang: cpp -->
int main(void){
//设定初始值,以防由于使用未赋值的变量引起垃圾值
float radius = 0.0f; //半径
float diameter = 0.0f; //直径
float circumference = 0.0f; //周长
float area = 0.0f; //面积
float Pi = 3.14159265f; //π
printf("请输入一个直径数字:");
//scanf()是另一个需要包含头文件stdio.h的函数
//它专门处理键盘输入,提取通过键盘输入的数据,按照第一个参数指定的方式解释它
//第一个参数是放在双引号内的一个控制字符串,为float类型
//scanf()将float类型的数存到变量diameter中
//控制字符串是控制输入,而不是输出。
scanf("%f",&diameter); //&符号叫做寻址操作符,它允许读入的数值存进变量diameter
radius = diameter / 2.0f;
circumference = 2.0 * Pi * radius;
area = Pi * radius*radius;
printf("\n周长为:%.2f",circumference); //宽度为默认,小数位为2位
printf("\n面积为:%.2f\n",area);
return 0;
}
###读取数据的格式说明符
- 读取short类型的数值 ----
%hd
- 读取int类型的数值 ----
%d
- 读取long类型的数值 ----
%ld
- 读取float类型的数值 ----
%f
或%e
%e
代表使用指数模式,比如32E-5 - 读取double类型的数值 ----
%lf
或%le
%lf
代表双精度浮点数%f
代表普通浮点数
###定义命名常量
例如像π
的值就是一个不会改变的值,这种值就要设置成常量,使之在程序中保持不变,以免带来计算错误
第一种方法(将π定义为一个符号)
<!-- lang: cpp -->
#define PI = 3.14159f; //定义了一个常量,常量的命名通常全是大写字母,与变量区分开
int main(){
printf("π=%f",PI)
}
第二种方法(用const关键字修饰)
将π
的值定义成变量,并且用const关键字修饰,固化变量,告诉编译器,它的值是固定不变的
<!-- lang: cpp -->
const float Pi = 3.14159f; //定义了Pi是一个float类型的常量值
###极限值
计算机中的数值总是受限于该机器可以存储的值域 对浮点数的极限值使用说明符%e,表示这个数值是指数形式 用%u输出无符号整数值 如果用%d输出无符号类型的最大值,则最左边的为(带符号类型的符号位)为1的数值就得不到正确的解释
整数类型
头文件<limits.h>
中定义的符号表示每种类型的极限值,如下所示
char
- 上限:CHAR_MAX
- 下限:CHAR_MIN
short
- 上限:SHRT_MAX
- 下限:SHRT_MIN
int
- 上限:INT_MAX
- 下限:INT_MIN
long
- 上限:LONG_MAX
- 下限:LONG_MIN
long long
- 上限:LLONG_MAX
- 下限:LLONG_MIN
如何应用
<!-- lang: cpp -->
//无符号整数类型的下限都是0,所以他们没有特定的符号
#include <limits.h>
int main(){
//初始化一个int变量,这个语句把number设置为最大值,编译器会利用该最大值编译代码
int number = INT_MAX;
//打印整数类型的上限值和下限值
printf("int MIN AND MIN is %d ~ %d\n",INT_MIN,INT_MAX);
printf("long MIN AND MIN is %d ~ %d\n",LONG_MIN,LONG_MAX);
printf("short MIN AND MIN is %d ~ %d\n",SHRT_MIN,SHRT_MAX);
printf("long long MIN AND MIN is %d ~ %d\n",LLONG_MIN,LLONG_MAX);
return 0;
}
小数类型
<float.h>
头文件定义了表示浮点数的符号
float
- 上限:FLT_MAX
- 下限:FLT_MIN
double
- 上限:DBL_MAX
- 下限:DBL_MIN
long double
- 上限:LDBL_MAX
- 下限:LDBL_MIN
######sizeof运算符
<!-- lang: cpp -->
/*
sizeof运算符可以确定给定的类型占据多少字节
例如表达式sizeof(int)会得到int类型的变量所占的字节数
所得的值是一个size_t类型的整数,对应一个基本整数类型
size_t类型在标准头文件<stddef.h>和其他头文件中定义
但是由于不同的C库中有所不同,所以最好使用size_t变量存储sizeof运算符生成的值
例如size_t size = sizeof(long long);
*/
int main(void){
//因为sizeof运算符的结果是一个无符号整数,所以用%u说明符输出它
printf("Variables of type char occupy %u bytes\n",sizeof(char));
printf("Variables of type short occupy %u bytes\n",sizeof(short));
printf("Variables of type int occupy %u bytes\n",sizeof(int));
printf("Variables of type long occupy %u bytes\n",sizeof(long));
printf("Variables of type long long occupy %u bytes\n",sizeof(long long));
printf("Variables of type double occupy %u bytes\n",sizeof(double));
printf("Variables of type float occupy %u bytes\n",sizeof(float));
printf("Variables of type long double occupy %u bytes\n",sizeof(long double));
return 0;
}
来源:oschina
链接:https://my.oschina.net/u/998474/blog/208685