C PRIMER PLUS 学习笔记(0)

总之,从今天开始,我就算正式学习编程了。
写博客主要还是弥补我差的可怕的记忆力,把自己的一些在看书时的想法记下来。( 哼,老子坐等脑机接口成熟的那一天,我看谁还背书 ~)
说实话,学了C 我才发现,我是所有语言都不想学,好在编程语言看上去结构比英语简单点。
本人懒的一批,之前的不想记,就从书的4.4开始吧。

printf() 和 scanf()

计算机和我的直接对话函数,现在看上去用的最多。

关于printf()

不同的转换说明(输出格式)会按照不同的方式对储存的数转换。
函数体:printf(格式字符串,项1,项2...)
以下是主要的打印转换:

%a 浮点,十六进制,和 p计数法0x12.3p5=(116^1+216 ^ 0 +316 ^(-1))(2 ^ 5) //额,哪位大佬能解释下这种计数方式有什么用吗?
%A 和上面一样诶
%d 十进制整数
%e 浮点e计数
%E 同上,只是打印时e变大E
%f 浮点十进制
%c 一个字符
%g 自动选择%f或%e//指数小于-4或大于等于精度1用%e
%G 同上
%o 无符号八进制整数
%p 指针(好像挺重要,然而还没学。。。)
%s 字符串
%u 无符号十进制整数
%x 无符号16进制整数
%X 同上
%%、%’ 打印%后面的字符

/
/红豆包 红豆包 红豆包 红豆包 红豆包 红豆包 红豆包 红豆包 红豆包
/红豆包 红豆包 红豆包 红豆包 红豆包 红豆包 红豆包 红豆包
/红豆包 红豆包 红豆包 红豆包 红豆包
/

printf()转换说明修饰
进一步编排要打印的字符在窗口中的位置和格式
修饰符表格:

修饰符 含义
- 待打印项左对齐
+ 显示数的正负号
空格 数为正,打印空格;数为负,打印减号
# 个人感觉和保留有效数字挺像,书上写的是把结果转换为另一种形式。%o,以零开始打印;%x,以0x开始打印;%f %d,保证有小数点;%G,防止后面零被删除。
0 数前补零,对于整数格式,若出现-标记或指定精度,则被忽略
数字 最小字段宽度,被超过自动补充宽度
.数字 精度
h,hh,l,ll 和整形转换说明一起使用
L 和和浮点转换说明一起使用
j 表示intmax_t,uintmax_t类型的值定义在stdint.h中
t 和整形一起用,表示ptrdiff_t类型。ptrdiff_t指两个指针差值的类型
z 和整形转换说明一起用,表示size_t类型的值。size_t是sizeof返回的类型。

转换只是将一个数值翻译出来并打印,并不能改变数值
printf本身有返回值,返回的是打印字符的个数,如果输出有误,返回一个负数。

关于scanf()

  • 在了解指针之前,如果使用scanf(),要在变量名前加&,但把字符串读到数组中,不要使用&。
  • scanf()使用空白把输入分成多个字段,系统会依次匹配,但%c转换说明会读取每一个字符。
  • scanf()函数所用的转换说明几乎与printf()函数相同。主要区别是对于float和double类型,printf90函数有%f、%e、%E、%g、%G转换说明,而scanf()只把它们用于float类型,对于double要用l修饰符。
  • scanf()除空格字符外普通字符必须与输入字符相匹配 如scanf("%d,%d",&n,&m)输入时要有逗号。
  • scanf()的返回值,若没读取到任何项,scanf()返回0,当其检测到文件结尾时,会返回EOF(是个啥。。。据说通常被定义为-1)。
    -空白字符,除了%c模式,scanf()会在读取输入时跳过非空白字符前的所有空白字符,然后一直读取,直至遇到空白字符或别的类型的字符

  1. c语言中:
    float浮点数7位有效数字。
    double双精度数16位有效数字。
    单精度数的尾数用23位存储,加上默认的小数
    点前的1位1,2^(23+1) = 16777216。因为 10^7 < 16777216 <
    10^8,所以说单精度浮点数的有效位数是e799bee5baa6e79fa5e98193e4b893e5b19e313333373866657位。 双精度的尾数用52位存储,2^(52+1) = 9007199254740992,10^16
    < 9007199254740992 < 10^17,所以双精度的有效位数是16位
    单精度浮点数的实际有效精度为24
    位二进制,这相当于 24*log102≈7.2
    位10进制的精度,所以平时我们说“单精度浮点数具有7位精度”。(精度的理解:当从1.000…02变化为1.000…12时,变动范围为
    2-23,考虑到因为四舍五入而得到的1倍精度提高,所以单精度浮点数可以反映2-24的数值变化,即24位二进制精度)
    浮点数7位有效数字。(应该是单精度数)
    双精度数16位有效数字。
    浮点数取值范围:
    负数取值范围为 -3.4028235E+38 到 -1.401298E-45,正数取值范围为 1.401298E-45 到 3.4028235E+38。
    双精度数取值范围:
    负值取值范围-1.79769313486231570E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 1.79769313486231570E+308。
    //百度网友 夜礼服假面MP ↩︎

你可能感兴趣的:(笔记)