整形数据储存一般用第一个bit来表示符号
1为负数
0为正数
正数负数原码、反码、补码规则不同
计算机一般使用补码便于计算(可以不用考虑符号)(但不能越界)
整形中32767+1=-32768(越界情况),类似于圆环循环
浮点型数据存储以符号位、阶码、尾数来存储
浮点型数据精确度只以有效数字计算,因此相对偏差恒定,因此分布属于原点密集,越远(绝对值越大)就越稀疏(绝对偏差越大)
字符型数据一般占一个字节
汉字占两个字符
整形数据无符号型可以有更多的数据长度储存数值(因为不用判断符号)
常见转义字符
换行符\n
制表符\t
反斜杠本身\\
双引号\”
单引号\'
八进制码代表的字符\ddd eg:’\101‘代表’A'
十六进制码代表的字符\xhh eg:'\x41'代表‘A'
%不需要\
但是在print和scanf中需要用%%来表示%本身
数据精度和取值范围不同
数据输入输出主要靠printf和scanf两个函数来完成
printf(格式控制字符串,输出参数1,…,输出参数n);
scanf(格式控制字符串,输入参数1,…,输入参数n);
格式控制说明符%
字符char:%c
实数float:%f
实数double:%lf
整数int:%d
整数可以有多重形式
十进制 八进制 十六进制
int %d %o %x
long %ld %lo %lx
unsigned %u %o %x
unsigned long %lu %lo %lx
(八进制只有无符号)
printf(“%d,%d,%d\n",10,010,0x10);
其中0开头的整数是八进制的
0x开头的整数是十六进制的
(输入的时候可以不用这样)
eg:scanf("%o%d\n",&a,&b);
因为输入的时候已经说明是八进制的类型了,所以不需要以0xx这样的形式输入
宽度控制可以用%md表示,m代表长度,不足则右对齐,左边用空格填满,比长度大则按原长度
(%-md的形式可以让字符左对齐)
float和double输入有两种形式
%f(float)和%lf(double)是小数形式
%e(float)和%le(double)是指数形式
输出(float和double使用相对的格式控制说明)
%f如果不说明则保留6位小数
%e以指数的形式输出