从零单排c++ primer(1)

(1)数据类型决定了程序中数据和操作的意义。
(2)基本内置类型中算术类型包括:a.整数型  b.浮点型
(3)大多数计算机以2的整数次幂个比特作为块来处理内存,可寻址的最小块成为“字节”,存储的基本单元成为“字”。 
(4)浮点型可表示单精度、双精度和扩展精度值。
(5) 关于类型转换:
          1.当把一个非布尔型的算术值赋给布尔型时,初始值为0则结果为false,否则结果为true。
          2.当把一个布尔型付给非布尔型时,初始值为false则结果为0,初始值为true则结果为1。
          3.当把一个浮点数赋给整数类型时,进行近似处理。结果值将仅保留浮点数中小数点之前的部分。
          4.当把一个整数值赋给浮点型时,小数部分记为0。
          5.当赋给无符号类型的一个超出它的表示范围的值时,结果是初始值对无符号类型的表示数值总数取模后的余数。
          6.当赋给带符号类型一个超出它表示范围的值时,结果是未定义的。此时程序可能继续工作,可能崩溃,也可能生成垃圾数据。 
(6)当一个算术表达式中既有无符号数又有int值时,那个int值就会转换成无符号数。(说明无符号比int屌一点)
         如果表达式里既有带符号类型又有无符号类型,当带符号类型取值为负时会出现异常的结果,这是因为带符号数会自动转行成无符号数。
(7)无符号的数的值不能小于0这一事实关系到循环的写法
         for(unsigned u = 10; u>=0; --u)
                std::cout << u << std::endl;//一个错误的死循环 
(8)字面值常量的形式和值决定了它的数据类型,默认情况下,整形字面值常量中十进制字面值常量是带符号数,八进制和十六进制字面值既可能是带符号的也可能是无符号的。short类型没有对应的字面值常量。 
(9)由单引号括起来的一个字符称为char类型字面值,双引号括起来的零个或者多个字符则工程字符串型字面值。
(10)如果两个字符串字面值位置紧邻且仅由空格、缩进和换行符分隔,则它们实际上是一个整体。
(11)如果反斜线\后面跟着的八进制数字超过3个,只有前三个数字与\构成转义序列。 
(12)c++中每个变量都有其数据类型,数据类型决定着变量所占内存的大小和布局方式,该空间能存储的值的范围,以及变量能参与的运算。
(13)给一个int初始化的4种形式:
            1.int a = 0;
            2.int a = {0};  //C++11新标准,如果初始化存在丢失信息的风险,则编译器报错。
            3.int a{0};
            4.int a(0);  
(14) 定义于函数体内的内置类型的对象如果没有初始化,则其值未定义。类的对象如果没有显式地初始化,则其值由类确定。
(15)c++支持分离式编译机制,该机制允许将程序分割为若干个文件,每个文件可被独立编译。为了支持这种编译,c++语言将声明和定义区分开来。
(16)变量声明规定了变量的类型和名字,定义在此基础上还申请了存储空间,也可能会为变量赋一个初始值。
(17)如果想声明一个变量而非定义它,就在变量名前面添加一个关键字extern,而且不要显式地初始化变量,任何包含了显式化的声明即成为定义。 
(18)变量能且只能被定义一次,但是可以被多次声明。
(19)引用为对象起了另外一个名字,引用类型引用另外一种类型。引用并非对象,相反的,它只是为一个已经存在的对象所起的另一个名字,所以不能定义引用的引用。
(20)因为无法令引用绑定到另外一个对象,因此引用必须初始化。定义了一个引用之后,对其进行的所有操作都是在与之绑定的对象上进行的。 
(21)引用的类型都要与绑定对象进行严格匹配,而且,引用只能绑定在对象上,而不能与字面值或者某个表达式的计算结果绑定在一起。 
(22)因为引用不是对象,没有实际地址,所以不能定义指向引用的指针。
(23)指针的值只有下面4种状态:
            1.指向一个对象。
            2.指向紧邻对象所占空间的下一个位置。
            3.空指针,意味着指针没有指向任何对象。
            4.无效指针,也就是上述情况之外的其他值。
(24)解引用操作紧适用于那些确实指向了某个对象的有效指针。
(25)空指针不指向任何对象,生成空指针的几种方法:
            1.int *p1 = nullptr;
            2.int *p1 = 0;
            3.int *p1 = NULL;
(26)把int变量直接赋给指针是错误的操作,计时int变量的值恰好等于0也不行。
            int zero  = 0;
            pi = zero; // error
(27)使用未经初始化的指针是引发运行时错误的一大原因。
(28)void* 是一种特殊的指针,可用于存放任意对象的地址。 
(29)面对一条比较复杂的指针或者引用的声明语句时,从右向左阅读有助于弄清楚它的真正含义。 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值