博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ primer 的第一天和第二天的学习
阅读量:3536 次
发布时间:2019-05-20

本文共 2943 字,大约阅读时间需要 9 分钟。

   这两天没有太多的事情,c++primer是我大一下学期的时候买的,看过一段时间,之后又没再看,现在大二上学期,在学面向程序设计语言,这两天在回顾c++primer的时候,有的地方会比原先明白很多,有的地方还不是特别的明白,

而我野会把我不会的,和我自己不熟悉的基础知识在这个博客中慢慢记录,可以见证我的成长吧。

 

  2.1 基本内置类型

    2.1.2 类型的转换

         signed char c = 256;    //  c的值是未定义的

              当我们赋给带符号类型的一个超出它表示范围的值时,结果是未定义的。此时,程序可能继续工作,可能崩溃

也可能产生垃圾数据

    

       含有无符号类型的表达式(unsigned)

(1)无符号的运算

        unsigned u = 10;

         int i = -42;

         cout << i + i << endl;   // 输出 -84

         cout << u + i << endl;  //  输出 4294967264(int 占32位)

(2)无符号的循环算法

        for(unsigned u = 10; u>= 0; --u)

                             cout << u << endl;

             当u为-1时,对u进行取模,得到一个大数,再次循环

 

   2.1.3  字面值常量

         整型和浮点型字面值

               20  // 十进制

               024  // 八进制

               0x14 || 0X14 // 十六进制

 

           浮点字面值用小数点(3.1415)或科学计数法(3.1415E0或3.1415e0)表示

 

2.2 变量

   2.2.2 声明和定义  关键字(extern)

                 如果在多文件中使用同一个变量,必须将声明和定义分离

                 变量的定义必须出现在且只能出现在一个文件中,其他用到该变量的文件必须对其进行声明,却绝不能重复定义

 

2.3 复合类型

    2.3.1 引用

          int ival = 1024;

          int &refval = ival;  // refval 指向ival,是ival的另一个

          int &refval2;            // 报错:引用必须被初始化

       引用和初始值绑定在一起,而不是将初始值拷贝给引用,因为无法令引用重新绑定到另一个对象,因此引用必须初始化

 

2.4 const 限定符

 

        cont 对象一旦创建后其值就不能再改变,所以const对象必须初始化

                 const int i = get_size ();          // 正确:运行时初始化

                 const int j = 42;                       // 正确:编译时初始化

                 const int k;                               // 错误:k是一个未经初始化的常量

           如果想在多个文件共享用一个const对象,在变量定义前加上关键字extern

            例如:// file_1.cc 定义并初始化一个变量,该常量能被其他文件访问

                         extern const int bufsize = fcn();

                       // file_1.h 头文件 

                extern const int bufsize      // 与file_1.cc中定义的bufsize是同一个

 

2.4.1

      初始化和对const的引用

  (1)允许为一个常量引用绑定非常量的对象,字面值,甚至是一个一般表达式:

                        int  i = 42;

                        const int &r1 = i;              // 非常量对象

                        const int &r2 = 42;           // 字面值

                        const int &r3 = r1 * 2;       // 一般表达式

                        int &r4 = r1 * 2;                 // 错误,r4是一个普通的非常量引用

2.4.2

        指针和const

        指向常量的指针(const int *)和常量引用(const int &)指的是不能改变所指对象的值,而没有规定那个值

不能通过其它路径改变(可以是常量(const int),非常量(int))

         

        const 指针(int * const)----- 常量指针

        指针是对象而引用不是,因此可以把指针本身定义为常量。常量指针必须初始化,而一旦完成初始化,它的值就不能发生改变。

         int errNumb = 0;

         int * const curErr = &errNumb  // curErr 将一直指向errNumb

2.4.4

       (常量表达式)是指值不会改变,并且在编译过程就能得到计算结果的表达式:

                         

     const int max_files = 20;         	// 常量表达式
const int limit = max_files + 1;		// 常量表达式
int staff_size = 27;				// staff_size的值会改变
const int sz = get_size();			// 运行时才会得到结果

             

               constexpr 变量:

               将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式,声明constexpr的变量一定是一个常量,而且必须用常量表达式初始化

constexpr int mf = 20;			// 20是常量表达式
constexpr int limit = mf + 1;		// mf+1是常量表达式
constexpr int sz = size()			// 只有当size是一个constexpr函数时,才是一条正确的声明语句

 

 

 

转载地址:http://akxhj.baihongyu.com/

你可能感兴趣的文章
学习日记03
查看>>
学习日记04
查看>>
学习日记08(元组、字典、集合)
查看>>
js自定义数据顺序进行升序或者降序排序
查看>>
【零】简单数仓框架优化、配置及基准测试
查看>>
【零】Linux中MySQL安装
查看>>
Sqoop的安装及测试
查看>>
Kylin的简单使用
查看>>
Presto的概念和安装使用
查看>>
Druid的Web页面使用
查看>>
Scala-HelloWorld
查看>>
Scala-IDEA中环境部署
查看>>
Scala-HelloWorld解析
查看>>
Scala-变量和数据类型
查看>>
Scala-流程控制
查看>>
Scala-面向对象后章
查看>>
iOS蓝牙原生封装,助力智能硬件开发
查看>>
iOS 代码的Taste(品位)
查看>>
iOS开发代码规范
查看>>
iOS组件化实践(基于CocoaPods)
查看>>