c primer plus 大一学习记录

第三章

一、零碎知识

1、输出一闪而过用getchar()

2、float:

              Printf:%f、%.2f(表示精确到小数点后两位,同理%.3表示后三位)

3、scanf:

              &:取地址符号,找到变量的地点

              表达式:scanf(“%f/d”,&…(声明的变量))

4、常量与变量

       常量:程序使用前预先设定好了

       变量:可能会改变或被赋值

5、位,字节和字:一字节等于八位

       A、都用于描述计算机数据单元或存储单元(主要指存储单元)

       B、最小存储单元是位(bit),存储0、1

              是计算机内存的基本构建块

       C、字节可表示0-255的整数或一组字符

       D、字是设计计算机时给定的自然存储单位

              计算机字长越大,其数据转移越快,允许的内存访问也越多

6、整数与浮点数

       A、储存方式不同:

                               整数:就是整数(感觉在搞笑)

                                          若一个数不需要八位以0补齐八位,从右起第一个数的位置叫

                                   第零位,以此类推,第八个数叫第七位

                             浮点数(有小数部分,“.00”也算):分成小数部分和指数部分存储

       B、有无小数部分

       C、浮点数损失的精度更多(某些算术运算)

          a、单精度:(float)

                              有效六位(指全部位,从左算起)

                              例如:3.1415926从左起只有3.14159六位准确,后面有可能对(运气)

          b、双精度:(double)

                             有效位十位(同上)

       D、浮点数通常是实际值的近似值(理由看C)

       E、浮点运算比整数慢

二、基本数据类型(掌握printf()函数)

       1、int类型:

             A、认识int类型

                a、有符号

                b、整数:正整数、0、负数都可

                c、一般储存一个int占一个机器字长(看计算机几位,早期16位,目前32位)

                d、ISOC规定int的取值范围最小为-32768~32767

                      (为什么是这两个数字呢?首先要知道原码、反码、补码,具体不详细说明)

                e、系统用一个特殊位的值表示有符号整数的正负号(0位正,1位负,放首位)

             B、声明int变量

                   a、声明为变量创建和标记存储空间,并为其指定初始值

                   b、格式:int 变量名;(多个最好转行,养成良好风格)

                                    int 变量名1,变量名2;(若写在一行用逗号分隔)

              C、变量获值

                     a、赋值:将右边的数值给左边的变量

                                    为变量赋一个初始值(初始化变量)若在声明时赋值注意

                                    不要出现int a,b=10的写法(可能出现下面情况)

                     b、通过函数(如scanf())获值

                     

               D、int类型常量:大多数整数(非常大除外)

        2、其他整数类型

              A、short int类型:

                                          a、存储空间可能比int小

                                          b、常用于较小数值(节省空间)

                                          c、有符号

                                          d、16位(一般)

              B、long int类型:

                                          a、存储空间可能比int多

                                          b、适用于较大数值

                                          c、有符号

                                          d、32位(一般)

                                       e、在值的末尾加l(小写的L)或L则较小的常量也可以按long类

                                   型存储(一些c标准函数要求使用long类型的值)

              C、long long int类型:

                                          a、存储空间可能比long多

                                          b、适用于更大数值

                                          c、至少占64位

                                          d、有符号

                                          e、在值的末尾加ll((小写L)或LL则可以按longlong类型存储

              D、unsigned int类型:

                                          a、与有符号类型表示的范围不同

                                          b、只用于非负值的场合

                                          c、可表示更大的数(因为原用于表示负数的部分用于表示正数)

                                          d、常用于计数

              E、C90新增:unsigned long int、unsigned short,其中有u或U后缀表示unsigned

              F、在任何有符号类型前面添加关键字signed强调使用有符号类型的意图

              G、每种类型都有适用情况,考虑:运算速度、程序移植到不同位机、存储空间等

                    因素

              H、声明与int同

       3、printf()函数:

              A、%d:占位符,称为转换说明,指明打印整数的位置,要与打印值类型匹配

              B、八进制和十六进制

                     a、0x或0X前缀表示十六进制

                     b、0前缀表示八进制

                     c、十进制:%d

                        八进制:%o

                        十六进制:%x

                     d、显示各进制前缀0、0x、0X:在%后面加#,例如%#o等

                     e、十进制、八进制和十六进制在计算机内都是二进制存储,所以即使

                  赋值是以十进制的形式,也可以以八进制打印

  C、打印:

     a、int:%d、%o、%x

     b、short:%hd、%ho、%hx

     c、long:%ld、%lo、%lx

     d、longlong:%lld、%llo…

     e、unsigned:%u(unsigned int)

          h或l都可以与u一起用:如%lu

      f、char:%c

      g、float:%f、%e(以指数记数法表示)

​​​​​​​

     h、double:%lf、%le

     i、long double:%llf、%lle

  4、整数溢出:

              A、原码:直接正负数转换成二进制

                              如+1的二进制00000001,-1的二进制10000001

                 反码:按位取反

                             如10000001按位取反(符号位不变)11111110

                 补码:在反码基础上加一

                             如11111110+1=11111111

                 所以-1在计算机中以11111111存储

              B、当整数超出类型的取值范围,有可能会从起始点开始(不一定),所以若将一个

              无符号数以有符号数形式打印可能打印值不同(无符号数较小除外)

              如long类型,从0开始到最大2147483647,当整数超过它,就会从-2147483648

              开始继续往上增加

       5、char类型

          A、认识char类型

                 a、存储整数(实质)存储字符(表面)

                 b、字符:字母、标点符号、空格等

                 c、标准ASCll码的范围是0~127,只需要7位二进制数即可表示

                 d、char类型通常被定义位8位的存储单位:

                       有符号:-128~127

                       无符号:0~255

                       用signed强调有无符号

                 e、ISO/IEC 10646标准

                 f、c语言把1字节定义为char类型占用的位(bit)数

              B、声明char与int同

              C、字符常量和初始化

                     a、用单引号括起要赋给变量的单个字符(一定是单个(除非是转义字符\~,

                     多个只会显示最后一个)且是单引号,因为双引号括字符串)

                     b、也可以用数字代码赋值((不用单引号)风格不好)

              D、非打印字符

                     a、可以用数字或’转义序列’

                           

                     b、要用八进制ASCll码表示一个字符可以在编码值前面加一个\并用’’括起来

                     如’\007’,十六进制’\x加数字’

       6、浮点类型:

              A、可表示包括小数在内更大范围的数

              B、指数记数法:10000000=1.0e7(类似科学记数法,e后面的数代表10的指数)

              C、float:

                            a、至少能表示6位有效数字,(全部六位,不是小数点后六位)

                           b、系统存储一个浮点数要占用32位。其中8位用于表示指数的值和符号,

                           剩下24位用于表示非指数部分(尾数或有效数)(具体可查IEEE754)

              D、double:

                            a、至少10位

                            b、占64位

              E、long double:至少与double的精度相同

              F、书写形式:

                                   a、可无正号

                                   b、可省略小数点或指数部分,不能同时省略两者

                                   c、可省略小数部分或整数部分,不能同时省略两者

                                   d、不要在浮点型常量中间加空格:1.56 e12,应是1.56e12

                                   e、浮点数后面加f或F后缀系统会将浮点型常量看作float类型

                                      加l或L则视为long double类型,没有后缀是double类型

              G、打印(看上面)

              H、浮点值的上溢和下溢

                                   a、上溢:计算导致数字过大,超过当前类型能表达的范围,给变量

                                   (例子中的toobig)赋一个无穷大的特定值,用inf或infinity表示

                           

                                  b、下溢:是指由于数值太小,低于当前类型所能表示的最小的值,计算机

                                       就只好把尾数位向右移,空出第一个二进制位,但是与此同时,却损失了

                                       原来末尾有效位上面的数字

cNaN(not a number)未定义时printf显示nan

       7、类型大小

              Asizeof

                    a、以字节为单位给出指定类型的大小

                    b、用%zdC11C99标准)或%u%lu(非前者标准)

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值