整型数据
一个字节表示二进制的取值范围
一个字节8位
最小能放 00000000 0
最大能放 11111111 2^8=256
上面都是理论上来说的
在实际的程序语言中(如c语言等),又划分为有符号,与无符号、 最高位为1时负数,最高位为0是正数那么其最小值为 11111111(-128) 最大值为01111111(127)
浮点数的各位的组成名称
主要针对的是规范化的指数形式 (把小数部分中小数点前的数字为0、小数点后第1位数字不为0的表现形式成为规范化的指数形式比如:0.314159×10^1就是3.14159规范化的指数形式)
组成浮点数的各个部分的名称(针对于规范化的指数形式)
1、第一种解释
符号位:0代表正,1代表负
指数位:用于存储科学计数法中的指数
尾数位:存储尾数部分
2、第二种解释
阶码:对于任意一个二进制数N,可用N=S×2P表示,其中S为尾数,P为阶码,2为阶码的底,P、S都用二进制数表示,S表示N的全部有效数字,P指明小数点的位置。当阶码为固定值时,数的这种表示法称为定点表示,这样的数称为“定点数”;当阶码为可变时,数的这种表示法称为浮点表示,这样的数称为“浮点数”。
单精度浮点数在计算机中用32位二进制表示的。其中尾数用了低23位,而最高位就是这23位尾数的符号位。夹在符号位与尾数位中间的8位是阶码,是用来表示尾数乘以2的多少次方才是要表达的真正的二进制值的那个次方数,用所谓的移码表示。尾数用原码表示,<0时它的符号位(最高那一位)为1,反之为0;尾数都被袭变为大于1小于2的小数,小数点移动的位数决定了阶码的数值。双精度是用64位二进制表示的,方法与单精度的表示法一样,只是尾数是52位,阶码是11位而已。
printf函数的详细用法
printf函数的通式语法
printf(“输出框架*格式化设置”,附加参数)接下来就是详细解释各个的部分使用
输出框架
比如 printf(“Hello, world!\n”)中,就只用到了「输出框架」这一个参数。
格式化设置
这个*其实是没有的,这里只是告诉大家这两个参数之间是「连接起来」的,「不」需要空格。
比如printf(“sum=%d”,sum)
%[标志] [宽度] [精度] [长度修饰符] 转换字符
其中,带中括号的是「可选参数」,「不」带的是「必选参数」。
转换字符 含义
c char;字符
d int;带符号的十进制整数
i 同上
e double;以指数形式输出单、双精度浮点数
E 同上
f double;以小数的形式输出单、双精度浮点数(指数显示小写e)
g double;以%f或%e中较短的一种方式输出单、双精度浮点数(指数显示小写e)
G 同上,指数显示大写E
o unsigned int;无符号八进制(无前导0)
s char;字符串
u int;无符号十进制
x unsigned int;无符号十六进制(无前导0x)
X 同上(无前导0X)
p void;指针值
n int;用于存放已写字符的个数到变量,不用于输出
% 不进行参数转换;%本身
和转义字符对比下
标志
标志 | 含义 |
---|---|
- | 指定被转换的参数在其字段内左对齐(默认是右对齐) |
[空格] | 若非负数则加上空格 |
0 | 对于数值转换,当输出长度小于字段宽度时,添加前导0补充 |
# | 1. 若转换字符为o,则第一个数为0 2. 若转换字符为x或X,则在输出的非零值前加0x或0X 3. 对于转换字符为e、E、f、g或G,则输出的数总包含一个小数点。另外,对于转换字符g或G,还将尾部无意义的0保留 |
宽度:
转换后的参数输出宽度「至少」达到这个值,若不足则在「左边或右边」填补空格或者0。具体看标志的设置,「若无,默认左边填充空格。」
精度:
这里要声明一下,只有这个参数前面是要加点号"「.」"来分隔的,
对于「字符串」,它指定打印的字符的「最大个数」。
对于「整数」,它指定打印字符的「位数」,必要时加0来填补。
对于「转换字符为e、E或f」,它指定打印的「小数点后」的数字位数。
对于「转换字符为g或G」,它指定打印的「有效数字」位数。
长度修饰符:
修饰符 含义
hh 按signed char或unsigned char类型输出
h 按short或unsignedshort输出
l 按long或unsigned long输出
ll 按long long或者unsigned long long输出
L 按long double类型输出
附加参数的意义
先看下面的例子:
#include <stdio.h>
int main(void)
{
int c=3; //这里假定用户已经输入了值
printf("C的值为%d",c);
return 0;
}
可了解到c是一个动态参数,假如scanf("%d",&c)可以记录以及输出用户敲键盘c的值
#include <stdio.h>
int main(void)
{
char C = 'c';
printf("%c=%d\n", C,C);
return 0;
}
显示出的是c=99 这里可以观察到既输出了c 又输出了99
对比于
#include <stdio.h>
int main(void)
{
char C = 99;
printf("c=%d\n", C,C);
return 0;
}
输出的同样是c=99但是意义是不一样的
从ASCII表中看到字符c的十进制为99.