C++DAY02笔记

Printf

格式化输出(printf)(print format)

函数的原型 int printf(格式化字符串,表达式1,表达式2······),作用是显示格式串中的内容,并且在该字符串指定的位置插入要显示的值。

格式化字符串:1.普通字符-》直接输出。

​ 2.转换说明-》以%开头的字符,表示一个占位符,会以表达式的值替换占位符。

(常见的转换说明:%d:以整数的形式解释这片内存空间,并十进制的方式输出;%f:以浮点数的形式解释这片内存空间并输出;)

输出转换说明作用:1.以何种方式解释内存区域。(编码)

​ 2.以何种格式输出。

转换说明

格式:%m.pX(m,p代表整数,m和p是用来控制输出格式的。

m(minimal field width)代表最小字段宽度,表明要显示的最小字符数量;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qZNPUQit-1648645570273)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315101608572.png)]

p(pression)精度,精度的含义依赖转换说明符

  • d 代表显示数字的最小个数(必要时会在前面补0),如果省略p,则默认为1

  • f代表小数点后面数字的个数(默认为6),如果p为0,则不显示小数点

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pXUZaa0P-1648645570275)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315102556685.png)]

X代表字母,X的主要作用是以何种方式解释内存空间);

printf函数的返回值就是显示字符的个数。可以通过取地址符进行查看。

Scanf

转换说明

格式:int scanf(格式串,表达式1,表达式2……)

scanf本质上是一个“模式匹配函数”,试图把输入字符与转换说明进行匹配。

scanf从左到右依次处理转换说明,如果成功则继续处理后面的字符串,如果失败则立即返回,返回值是处理转换说明转换成功的个数。

转换说明的作用:

  1. 表示匹配的规则。

  2. 表示将字符数据转换成对应的二进制数据。

    scanf函数的格式串:普通字符,其他字符(精确匹配),空白字符(匹配任意多个空白字符,包括0个)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sq8CPMtY-1648645570276)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315112303699.png)]

注意事项

  1. scanf匹配%d,%f(进行数值匹配时),会匹配前面的空白字符。不会匹配后面的字符。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rz2VI71v-1648645570278)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315113427366.png)]

基本数据类型

基本数据类型分为:

  • 整数类型

    整数类型分为:

    • 有符号整数 short,int,long(int),long long (int)

    • 无符号整数 unsigned short(int),unsigned int,unsigned long(int),unsigned long long (int)

      注意事项:

      1. C语言没有明确规定各种整数类型的具体大小。可能根据机器的不同而不同。

      2. C语言规定了各种类型的最小大小。(int 类型至少要占两个字节)

      3. short<=int<=long<=long long

整数类型编码

无符号整数(以一个字节为例) 1001 0011=27+24+2+1=147
有符号整数(补码) 1001 0011=-27+24+2+1=-109

为什么有符号整数会采用补码形式?

  1. 利用加法器做减法运算

为什么采用补码的形式就能用加法器做减法运算?

模运算:

同余:x mod n =y mod n ->x≡y

等价类:

模运算定理1(替换原则):x≡x`(mod n)并且y≡y`(mod n),那么

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4clNmM9p-1648645570279)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315150316770.png)]

模运算定理2(结合性原则):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bPPlVIcB-1648645570280)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315150513311.png)]

模运算定理3(交换原则):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-88wrexIK-1648645570280)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315150749147.png)]

模运算定理4(分配原则):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Aw8kM2xr-1648645570281)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315150804276.png)]

64位机器上整数类型常见的取值范围

-字节最小值最大值
short2-215215-1=32767
unsigned short2065535
int4231232
unsigned404294967295……(约43亿)
long(>=4个字节)8-231/-263231-1/-263-1
unsigned long8
long long (>=8个字节)8
unsigned long8

整数常量的表示方法

三种表示方式:

  1. 十进制。1234,465,789(不能以0开头)
  2. 八进制。以0开头,01234,05456
  3. 十六进制。以0x开头,0xADAA5

整数常量的数据类型

十进制: int->long->long long ->error!

八进制、十六进制: int ->unsigned->long->unsigned long->long long ->unsigned long long ->error!

可以在整数常量的后面添加后缀,指定指数常量的类型:U(unsigned),L(long),LL(long long),LLU/ULL(unsigned long long )

读写整数

%u: 无符号十进制整数

%o:无符号八进制整数

%x:无符号十六进制整数

%d:有符号十进制整数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LjgtyvIc-1648645570282)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315155144983.png)]

读写短整数

在u,o,x,d前面添加h(short)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l1kyivSf-1648645570282)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315155343322.png)]

读写长整数

在u,o,x,d前面添加l

读写长长整数

在u,o,x,d前面添加ll

  • 浮点数类型

    浮点数包含:

    1. float(4个字节)

    浮点数编码规则(IEEE754标准)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gget2pRV-1648645570283)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315160819571.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8wn4HnWh-1648645570283)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315161851179.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ydg4GpVk-1648645570284)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315162837866.png)]

    1. double(8个字节)

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5LBz5f16-1648645570285)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315163213077.png)]

      浮点常量

      浮点数常量有多种表示方法,要么包含小数点,要么包含字母e(E)。例如57.0,57,5.70e2,498e-3

      浮点数常量默认是double类型,如果需要表示float类型,应该在浮点数常量后面添加字母f。

      读写浮点数

      %f: float

      %lf: double(注意l不能大写,大写Lf代表long double类型)

    2. long double(一般用于高精度的计算,一般情况下用不到)

  • 字符类型(C语言把字符类型当作整数类型来处理)

char类型大小为一个字节,并且采用ASCII编码表示。ASCII编码用7位表示128个字符(最高位都为0)

\0 空字符;空格 32;‘0’ 48;‘A’ 65;‘a’ 97

C语言把字符类型当作小的整数类型来使用,因此可以对字符进行算数运算和比较运算。

不能直接输入的字符,可以通过转义序列进行输入

转义序列分为:

  1. 字符转义序列。\a(alert bell) \b(backspace) \f(form feed) \n(new line) \r(carriage return)\t(horizontal tab)\v(vertical tab) \\(back slash) ?(question mark) \’(single quote) \"(double quote)
  2. 数字转义序列:
    • 八进制表示形式:以’\‘开头,后面最多3个八进制数字。\0,\101(A)
    • 十六进制表示形式:以’\x‘开头,后面接十六进制数字。\x0,\x41(A)

字符处理函数

定义在头文件ctype.h里面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ckRww0aM-1648645570285)(C:\Users\leo\AppData\Roaming\Typora\typora-user-images\image-20220315172434586.png)]

读写字符数据

  1. scanf/printf 配合%c 来读写字符

    注意事项:%c不会忽略前面的空白字符,如果想忽略前面的空白字符,可以在scanf中“ %c”

  2. getchar()/putchar()

    getchar()/putchar()的效率是高于scanf()/printf()。如果只是读写字符数据类型,建议使用getchar()/putchar()。

    while(getchar()!='\n'){……}      *读取这行剩余的字符*
    
  • 布尔类型

    C99定义了布尔类型,包含在<stdbool.h>头文件中。

    bool类型本质上还是无符号整数类型,其中非0表示true,0表示false

    注意事项:给bool类型变量赋值,非0会得到true,0会得到false;任何非0的值都会转化成1

()。如果只是读写字符数据类型,建议使用getchar()/putchar()。

while(getchar()!='\n'){……}      *读取这行剩余的字符*
  • 布尔类型

    C99定义了布尔类型,包含在<stdbool.h>头文件中。

    bool类型本质上还是无符号整数类型,其中非0表示true,0表示false

    注意事项:给bool类型变量赋值,非0会得到true,0会得到false;任何非0的值都会转化成1

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值