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 ↩︎

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值