C++ Primer读书笔记第二章①

C++ Primer

第二章 变量和基本类型

数据类型是程序的基础:它告诉我们数据的意义以及我们能在数据上执行的操作。 C++不仅定义了几种常用的基本内置类型(char, int, double等),更牛逼的是为程序员提供了自定义数据类型的机制,就是说你想怎么创造数据类型就怎么创造,根据实际项目需求,怎么爽怎么来。

基本内置类型

常用内置类型如下,内容较多,嫌麻烦的话可以只看带*的三个类型bool, int, double。

类型 含义
*bool布尔类型
char字符
wchar_t宽字符
char16_tUnicode字符
char32_tUnicode字符
short短整型
*int整型
long长整型
long long长整型
float单精度浮点数
*double双精度浮点数
long double拓展精度浮点数

同一类型的数据在不同机器上所占的内存是不一样的
内置类型的机器实现 大多数计算机以2的整数次幂个比特作为块来处理内存,下面区分两个概念

  • 字节(byte),可寻址的最小内存块
  • 字(word),存储的基本单元,通常由几个字节组成 例如:在一个字节为8比特,字为32比特(4字节)的机器上,我们可能看到一个字的内存区域如下:
字节的地址 字节中具体内容
7364240 0 1 1 1 0 1 1

意思就是这个内存块的地址(即可寻址内存块)是736424,它是4字节的,这个内存块存储的内容是0011,1011一个字节8比特。 通常,float 1个字, double 2个字, long double3个或4个字。

其他的你就别管了,要用的时候再查,一般也不用。

带符号类型和无符号类型

带符号类型可以表示正数,负数或0,可以理解为带的符号就是正负号,无符号类型只能表示非负数,毕竟不让带符号,默认就是正号了。 例如 unsigned long。有个小规定是unsigned int可以缩写为unsigned,谁让人家比较常用呢,程序员又会偷懒。


如何选择自己想要的类型呢? 概括一下就是,尽量选择范围小的,在具体编程或者做项目的时候你会知道要用什么类型的,因地制宜嘛。

类型转换

这个很好理解,我直接写代码你看注释就好

bool b = 42; //b为真,除非b=0,其他均为真
int i = b; //i=1,因为b是true,对应的int就是1,注意原来的42早就木有了
int a = 3.66; //a=3,注意不是四舍五入,而是直接舍弃
double c = a; //c=3.0

接下来两个转换稍微难理解一点,不过只要按照规则来推导,也很容易算出来

unsigned char m1 = -1;
signed char m2 = 256;

假设char占8个字节,你可以先算算m1和m2各等于多少


m1=255 因为:当我们给一个无符号数赋予一个超出它表示范围的值时,只要对它总数取模算出余数就好,在这里,8比特unsigned char表示0-255区间,总数为256,-1对256去模为255。 m2无定义 我们要避免给带符号类型赋值超过它表示范围的数。

int a = 1;
double b = 2.5;
cout << a+b << endl; 
//3.5,当碰到+/-等运算符,都会把小范围的数转成大范围的,int->double,
//主要目的是保证不损失精度

小tip:

int i = 42;
if(i)
{
    i = 0; //if的条件为真
}

我们可能会觉得自己肯定不会因为类型转换这么简单的东西而犯错,那我们来看看下面的代码,如果你看不出问题,就说明你也有可能会犯错

unsigned u = 10;
int i = -42;
cout << u + i << endl;

如果int是32位,它输出4294967264,对无符号数赋予超出范围的值了啊 再比如: 倒序输出10到0这十一个数

for(unsigned i=10; i>=0; --i)
    cout << i << endl;

这个会死循环,你懂的。
为了避免一些不必要的麻烦,作者建议不要混用带符号类型和无符号类型

字面值常量

我直接举一些例子说明,看过知道就好

内容 字面值常量
true布尔类型字面值
1整型字面值
1.0浮点型字面值
'1'字符字面值
"1.0"字符串字面值
#C++工程师#
全部评论
char是8个比特,不是8个字节
点赞 回复 分享
发布于 2017-02-07 19:44

相关推荐

07-25 10:31
门头沟学院 Java
求问各位大佬,笔试都考点啥
投递科大讯飞等公司10个岗位
点赞 评论 收藏
分享
评论
2
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务