C语言基础复习(一)数据类型与格式化输入输出

qwq现在被迫重新捡起大一的c语言。

1.数据类型关键字

1.1按存储类型分类

按计算机的存储类型可以分为两大类:整数类型和浮点类型。二者的存储方式不同

例如7,在8位字节中存储该数组00000111;
浮点数是分开存储小数和指数,例如7.0,在十进制下就是0.7E1,1是指数部分;计算机存储3.14159,首先是符号位+,接着是小数.314159,指数部分是1,10^1

1.2 按数据类型分类

基本的数据类型关键字:int,long,short,unsigned,char,float,double,signed,_Bool,_Complex,_Imaginary

int类型与其输入输出

修饰基本整数类型的关键字:short,long,unsigned,short和long都代表有符号。unsigned用于非负值场合,即unsigned
int 表示0~65535。

打印整数
h和l前缀都可以和u一起使用%lu,%lld,%llu

基本输入修饰
%d%ld %hd
%x%lx %hx
%o%lo %ho
char类型,bool类型与其输入输出

char也是一种整数类型,因为存储的是整数(ASCII码)例如字母A其实是整数65,char占一个字节。
用%c指明待打印的字符

float,double,long double与其输入输出

浮点数在计算机的计数方式一般是e计数法,123000->1.23*10^5->1.23e5.
float可以精确到小数点后6位,浮点数占32位,即4个字节,第一个8位表示指数的值和符号,后24位表示非指数部分,双精度double多出来的32位全部给指数部分。
默认情况下编译器假定浮点型常量是double类型,可以通过后缀2.3f,和2.3L来改变类型。

打印浮点数
%f 十进制计数法
%e 指数计数法
修饰 %lf %le

2.字符串

字符串都被存储在char类型的数组中,数组由连续的存储单元组成,尾部是一个空字符,在输入输出中以%s来表示。

3.格式化输入输出

3.1标记

  • 左对齐 %-20s
  • 显示正负号 %+6.2f
  • 格式转换%#o,%#8.0f
  • 0 表示用0填充字段

3.2修饰符

  • 数字与.数字
    前面的数字表示宽度,后面的数字表示小数点的位数%5.2f
  • %hu %hx %6.4hd 表示short int 或unsigned short int
  • %hhu %hhx %6.4hhd 表示signed char 或unsigned char
  • l与ll
  • L
  • %td表示指针差 %z表示size_t类型,sizeof的返回值
  • *在printf和scanf里的不同用法
    如果是printf(“The number is:%*d”, width, number)代表宽度
    如果是scanf(“%*d%*d%d”,&n)代表跳过

3.3数据的上溢和下溢

整数

对于unsigned整型溢出,溢出后的数会以2^(8*sizeof(type))做模运算
对于signed整型溢出,分为向上溢出和向下溢出。
例如 signed char 正整数最大值127,负整数最小值128.

int main(void)
{
    signed char x;
    x = 125+5;
    printf("%d\n",x);
}

输出为-126
130的二进制位10000010,符号位为1,用补码表示负数,绝对值取反+1,倒推回去就是10000010-1 = 10000001,再取反01111110,即-126

signed char x;
 x = 200+250;
 printf("%d\n",x);

输出为-62,因为450超过了255,取结果的低八位,再进行补码的反向操作(减1取反)

浮点数

上溢:当赋值的浮点数超过定义类型的范围时,就会出现上溢。
一般输出INF
下溢:在一些除法运算中,由于数值太小,低于当前类型所能表示的最小的值,计算机就只好把尾数位向右移,空出第一个二进制位,但是与此同时,却损失了原来末尾有效位上面的数字,这种情况就叫做下溢。以一个十进制为例,把一个有4位有效数字的数(如,0.1234E-10)除以10,得到的结果为:0.0123E-10.虽然得到了结果,但是在计算过程中丢失了原末尾有效位尚的数字,这种情况叫做下溢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值