C++ primer plus笔记整理 02

1.源代码中的标记和空白:

一行代码中不可分割的元素叫做标记也就是说不能被分开的一定是标记(也有标记能被分开来,见下),比如关键字,比如你自定义的变量等等….

对于编译器标识是 c++ 程序中最小的元素。C++ 分析器识别这些标记:标识符、关键字、文本、运算符、标点和其他分隔符。这些标记流构成一个
翻译单元。 

通常,两个标记之间,必须要用空格或制表符(或回车)将其分开,此时的{空格,制表符,回车}就统一称为空白
这里要注意了:
有些标记比较拽,可以分开也可以粘在一起,比如{},()这两个成对出现的符号,可以在其中加上空白,也可以省略空白直接连着写
还有”,”逗号,它在源代码中的位置随便放,怎么都不会影响效果

2.变量声明特点

在C和Pascal中所有的变量声明都位于函数或过程的开始位置,但c++没有这种限制
C++通常的做法是在首次使用前声明它。这样在使用的时候就不必在程序中到处查找,但是这样也有缺点:无法对函数那些变量一目了然
总结
对于声明变量,C++的做法是:在首次使用变量前声明它。

3.一些常用的math方法

sqrt() —– 返回平方根,如sqrt(6.25) = 2.5
pow(m,n) —– 返回以m为底,以n为指数的幂. m^n
int rand() —– 不接受参数,返回一个随机整数

4.变量名称需要注意的几点

首要的规则是:
C++规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。
需要特别注意的是:
以两个下划线或下划线和大写字母打头的名称被保留给编译器实现(编译器及其使用的资源)使用。

“_ _"打头的和'_'加大写字母打头的名字是给编译器实现保留的。如果你碰巧和编译器实现者取了同样的名字,就大坑了,这和编译器相关....

在知乎上的一个解释是:(《C++ Primer》第五版 中文版)
C++也为标准库保留了一些名字。用户自定义的标识符中不能连续出现两个下画线,也不能以下画线紧连大写字母开头。此外,定义在函数体外的标识符
不能以下画线开头

以一个下划线开头的名称被保留给实现,用作全局标识符

总结一下上面提到的:
_打头如:__myvar1,或+大写字母打头如:_Myvar2,这些命名的方式不会使得编译器报错,但是在具体程序运行实现的过程中如果遇见要使用这些变量的时候,恰好你的命名和C++标准库中的某个变量(因为标准库的变量都是这么命名的…..)相同,这时编译器就懵了,不知道优先用哪个了,那就报错了…..
加单个下划线的一般表明这是个全局变量,等到实现的时候再用到,我们最好不要在函数体外这样声明变量,可能会引发和上面类似的错误—运行时报错,但是这么声明的时候只要你的变量名没重,就相当于正常使用,但我们最好不要留下隐患…..

SO

我们应该好好规范自己编程时的命名规则

5.C++中基本整形规范和字节规则

C++基本整型的规范如下:

char < short <= int <= long <= long long
short至少16位
long至少32位
//long long 至少64位,这个是C++11提出来的数据类型,我们这里不考虑

这表明了什么呢?
int至少与short一样大
//long long 至少与long一样长

那这么合起来应该是如下这样:

char最小,1个字节8位,这个到哪儿都不变,个人觉得它就是最基本的ASCII码的表示
short至少16位,说明可以大于16位,32位也行;;而这建立在一个前提之下,就是小于或等于同平台的int,也就是16<=short<=int的位数

int根据不同平台的规定不同,早期的计算机大多是16位int,之后出现过24位int,后来的32位int,现在有的平台甚至用了64位int

int没有至少的位数指定,但是一定满足大于等于short,小于等于long,即:short位数<=int<=long的位数

它们的位数的取值范围是开放性的,只能根据实际情况得出,到了平台上就能轻易得出了,这里无法给出一个有效的范围。

现在再来说咱们关心的另外一个问题了:
字节通常指的是8位的内存单元,8个bit位,但是在C++中,它的定义不同了:C++的字节由至少能容纳实现的基本字符集的相邻位组成
这表明了:
C++的字节单位是>=8的,一个字节就不能确定为8位了,在一些国际编程中可能需要使用更大的字符集,如Unicode,这种情况下的C++的1个字节可能需要用16位表示甚至32位。

关于编码问题和平台字节理解的博主会另外写其他更为详细的总结,这里记住C++中的1字节不一定是8位即可,还需要看它使用的是什么编码规则。

有什么错误还请指出,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值