C++Primer
shiyongraow
冷暖自知
展开
-
C++primer---constexpr、类型别名、auto、decltype
1、常量表达式是指指不会改变且在编译过程就能得到计算结果的表达式,字面值属于常量表达式,用常量表达式初始化的const对象也是常量表达式。 C++11规定,允许将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化。 constexpr int mf = 20;原创 2017-07-29 21:53:20 · 1489 阅读 · 0 评论 -
C中的位运算
按位与 &按位或 |异或 ^取反 ~左移运算符 <<右移运算符 >>按位与 &参加运算的两个数制,按二进制进行 与运算。如果两个相应的二进位数为1,刚该位的结果为 1 否则为 0 1 & 1 = 1;0 & 0 = 0;0 & 1 = 0;1 & 0 = 0;3 = 0...转载 2018-07-25 09:47:14 · 219 阅读 · 0 评论 -
原码、反码、补码
明确一个前提:原码、反码和补码都是解决计算机存储出现的,主要解决的是负数的存储。在存储一个字节(8位)大小的数字(char)前提下:原码:原码是从用户角度出发,代表原始的二进制。 1、用户的数字分为正负数,符号位的存储 2、最高位为符号位:0代表为正数,1代表为负数 3、 1000 0001 左边是高位,右边是低位以1和0为例:+1: 0000 0001-1: 1000 0001原创 2017-12-05 22:22:51 · 1593 阅读 · 1 评论 -
C++Primer--string、vector、iterator
string对象中的字符范围for语句下标运算符 标准库类型Vector初始化vector对象值初始化列表初始值还是元素数量向vector对象添加元素迭代器begin end函数cbegin和cend函数箭头操作符Vector对象的副作用迭代器的运算string对象中的字符范围for语句For(declaration : expression) Stat原创 2017-09-02 19:31:58 · 229 阅读 · 0 评论 -
标准库类型string
Getline函数:希望在最终得到的字符串中保留输入时的空白符。这时应该用getline函数 Getline函数的参数是一个输入流和一个string对象,函数从给定的输入流中读入内容,直到遇到换行符为止(换行符也被读进来了),然后把所读的内容存入到string对象中去(不存换行符)getline只要一遇到换行符就结束操作并返回结果,哪怕一开始输入的就是换行符也是如此。 注意使用Getline函数原创 2017-08-02 11:16:10 · 220 阅读 · 0 评论 -
C++Primer----表达式
左值和右值算术运算符短路求值策略除法运算和取余运算递增和递减运算符成员访问运算符条件运算符逗号运算符位运算左值和右值左值可以位于赋值语句的左侧,右值则不行。 当一个对象被用做右值时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。算术运算符算术运算符包括(+ - * / % + - )(前俩个为一元正号和一元负号),满足左结合律,即如果运算符原创 2017-09-01 19:20:18 · 335 阅读 · 0 评论 -
浅谈c++中的while(cin)问题
阻塞式检查方式非阻塞式语句while(cin>>str),str是个string类型,在一行中输入几个string,末位加个ctrl+z,输入没有结束,除非输入换行后,再输入ctrl+z才能跳出输入。一直不明白未什么,解释请看下。输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin.get() 就会检测输入缓冲区中是否有了可读的数原创 2017-09-04 22:50:45 · 4545 阅读 · 0 评论 -
C++Primer--数组、指针
数组定义数组时必须指定数组类型,不允许用auto关键字由初始值的列表推断类型,另外和vector一样,数组元素应为对象,因此不存在引用的数组。字符数组的特殊性对字符串字面值对数组初始化。当使用这种方式时,一定要注意字符串字面值的结尾处还有一个空字符,这个空字符也像字符串其他字符一样被拷贝到字符数组中。不允许拷贝和赋值不能将数组内容拷贝给其它数组作为初始值,也不能用数组为其它数组赋值。数组的指针和数组原创 2017-09-02 23:51:26 · 183 阅读 · 0 评论 -
二进制加减法
十进制: 2 3 4 6 8 5- 1 6 8 5 9 0———————————————— 0 6 6 0 9 5在这个运算中,从右向左,5-0=5;8向前借一为18减九为9;六被减一为5再减5为0;4向前借一为14减8为6;3被减一为转载 2017-08-24 19:51:58 · 9742 阅读 · 0 评论 -
原码、补码、、、
首先说明一点这篇博文是基于网络资料 写作而来,尊重知识,广泛传播;可能你就需要它。但是转载请注明出处本博文参考链接 参考资料 参考资料本文说明一个基本的问题,补码的问题。需要说明一点补码是对负整数在计算机中存储的一种形式;另一种形式是负数在计算机中可以用符号+负数绝对值的形式表示一个负数;比如(-3: 1000 0011存储)但是这种表示的负数有两个零+0,-0,最要命的一点是不能做算术运算。比转载 2017-08-24 17:29:08 · 719 阅读 · 0 评论 -
C++Primer-- const
1、const对象一旦创建后其值就不能再改变,所以const对象必须初始化。与非const对象相比,只能在const类型对象上执行不改变其内容的操作。 2、如果想在多个文件之间共享const对象,必须在变量的定义前添加extern关键字。 //file_1.cc定义并初始化了一个常量,该常量能被其他文件访问 extern const int bufsize = fcn(); //file_1原创 2017-07-28 23:07:14 · 211 阅读 · 0 评论 -
C++primer 指针(二)
1、空指针不指向任何对象, int * p1 = nullptr;初始化空指针 把int变量直接赋给指针是错误的操作,即使int变量的值恰好等于0也不行。 指针和引用区别:引用并非一个对象,对引用的所有操作都是对引用所绑定的对象进行的;而指针不同,给指针赋值就是令它存放一个新的地址,令其指向一个新的对象。 2、赋值永远改变是等号左侧的对象 pi = &val; //pi的值被改变,现在pi原创 2017-07-27 23:03:32 · 199 阅读 · 0 评论 -
C++Primer——变量、引用、指针
1、C++中初始化和赋值是俩个完全不同的操作,初始化的含义是创建变量时赋与其一个初始值;而赋值的含义是把对象的当前值擦除,而以一个新的值代替。 string类规定如果没有指定初始值就生成一个空串,定义于任何函数体之外的变量被初始化为0(但有一种特殊情况,定义在函数体内部的内置类型将不被初始化,static关键字)2、extern关键字来声明变量, extern int i;//只是声明i i原创 2017-07-26 22:55:35 · 237 阅读 · 0 评论 -
逻辑运算符
1、and —— && (and和&&运算结果是一样的) 贴出wiki上的结果 “有假即假”2、or——|| “有真即真”3、nor “全0为1,其余为0”4、xnor 5、not原创 2017-08-03 10:15:47 · 355 阅读 · 0 评论 -
C++Primer----顶层const和底层const
以指针引入:指针本身是一个对象,它又可以指向另一个对象。因此,指针本身是不是常量以及指针所指的是不是一个常量就是俩个相互独立的问题。用顶层const表示指针本身是一个常量;用底层const表示指针所指向的对象是一个常量。注意:顶层const可以表示任意对象是常量,这一点对任何数据类型都适用,如算术类型,类,指针等。底层const则与引用和指针等复合类型部分有关。特殊的,指针类型既可以是顶层const转载 2017-07-30 20:24:08 · 343 阅读 · 0 评论 -
C语言中volatile关键字的作用
一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流...转载 2018-07-30 15:05:12 · 278 阅读 · 0 评论