c++primer 学习笔记(第二章)

第二章 变量和基本类型

2.1基本内置类型

基本内置类型中,因为位数的不同,这些类型所表示的最大最小值也因机器的不同而不同。

即“C++基本数据类型的存储空间依机器而定 。”

类型

含义

最小存储空间

bool 

布尔型

-

char

字符型

8bit

wchar_t

宽字符型

16bit

short 

短整型

16bit

int

整型

16bit

long

长整型

32bit

float

单精度浮点型

6位有效数字32bit

double

双精度浮点型 

10位有效数字64bit

Long double

扩展精度浮点型

10位有效数字64bit

C++没有规定每一种数据所占的字节数,但规定了int型数据所占的字节数不大于long int型,不小于short型。

C++的基本数据类型的存储空间实质上随CPU字长的不同而不同 。

C++的编译器有一个不成文的约定:就是根据机器字长来定义int的长度,最能反映代码的效率。但不是所有编译器都遵循这个规定,所以, 想要保证程序中的基本数据类型的值不越界,必须了解你所使用的编译器 。

一般的,如在visual c++中,int4byteshort2bytelong4byte8byte

 

经验:1.在大多数机器上,用整型int进行计数,很少使用short

           2.使用double这种浮点型通常不会出错,它有10位小数,而仅有6位小数的float很可能不够用。

 

 

2.2字面值常量

20    //decimal十进制

024   //octal八进制

0X14  //hexadecimal十六进制    //以上均表示十进制的20

通过加一个后缀,改变字面值常量的类型

128u  //unsigned

1L   //long,这里L大写小写均可,但提倡用大写

3.1415f      //单精度float型,这里f大写小写均可,f只可出现在小数后面,整数不可以!

3.1415e0f    //表示3.1415*10^0并且是float

'a'      //char

L'a'     //wchar_t

转义字符

转义字符

意义

ASCII码值(十进制)

\a

响铃(BEL)

007

\b

退格(BS)

008

\f

换页(FF)

012

\n

换行(LF)

010

\r

回车(CR)

013

\t

水平制表(HT)

009

\v

垂直制表(VT)

011

\\

反斜杠

092

\?

问号字符

063

\'

单引号字符

039

\"

双引号字符

034

\0

空字符(NULL)

000

\ddd

任意字符

三位八进制

\xhh

任意字符

二位十六进制

当然,也可以用ascii码来表示。

\7    表示 响铃符

字符串字面值"hello world!"13个字节,最后自动加上一个'\o'空字符
正如宽字符字面值,L"hello world!"为宽字符串字面值,占26个字节,最后自动加上一个"\0"宽空字符结束。

相同类型的字符串字面值可以连接,但字符串字面值可宽字符串字面值连接未定义!

如,可以这样写 cout<<"a mulit-line "

                 "string literal"

                 "using concatenation"

               <<endl;

注意:分两行书写的字符串字面值必须在第一行末尾加上反斜线\

习题2.10

[cpp]  view plain copy
  1. #include <iostream>  
  2.   
  3. using namespace std;  
  4.   
  5. int main()  
  6.   
  7. {  
  8.   
  9. cout<<"2M"<<endl;  
  10.   
  11. return 0;  
  12.   
  13. }  


修改后

[cpp]  view plain copy
  1. #include <iostream>  
  2.   
  3. using namespace std;  
  4.   
  5. int main()  
  6.   
  7. {  
  8.   
  9. cout<<"2\tM\n";  
  10.   
  11. return 0;  
  12.   
  13. }  


2^10

[cpp]  view plain copy
  1. #include <iostream>  
  2.   
  3. using namespace std;  
  4.   
  5. int main()  
  6.   
  7. {  
  8.   
  9. int value=2,pow=10,res=1;  
  10.   
  11. for(;pow>0;pow--) {  
  12.   
  13. res=res*value;  
  14.   
  15. }  
  16.   
  17. cout<<"the result of 2^10 is "<<res<<endl;  
  18.   
  19. return 0;  
  20.   
  21. }  


习题2.11

[cpp]  view plain copy
  1. #include <iostream>  
  2.   
  3. using namespace std;  
  4.   
  5. int main()  
  6.   
  7. {  
  8.   
  9. int value,pow,res=1;  
  10.   
  11. cout<<"please enter two numbers(value and power):"<<endl;  
  12.   
  13. cin>>value>>pow;  
  14.   
  15. int pow1;  
  16.   
  17. pow1=pow;  
  18.   
  19. for(;pow>0;pow--) {  
  20.   
  21. res=res*value;  
  22.   
  23. }  
  24.   
  25. cout<<"the result of "<<value<<"^"<<pow1<<" is "<<res<<endl;  
  26.   
  27. return 0;  
  28.   
  29. }  


2.3变量

左值和右值

左值可以放在赋值号的左边或者右边,而右值只能放到右量。

左值是变量的地址或者是一个代表对象在内存中的位置的表达式,右值是变量的值,常量或者常变量。

val1=val2/8  //这里val1是左值,val2是右值!

表达式不可是左值!!

对象是内存中具有类型的区域!

变量名由数字,字幕,下划线组成,并且以字母和下划线开头!!变量名不宜太长,不可为c++中的关键字~!!以下为几个重要的c++关键字:

 

图片来自http://apps.hi.baidu.com/share/detail/30620027  详解见此网站。

定义对象(初始化)

初始化分为:1复制初始化  如:int a=1024;

            2直接初始化  如:int a(1024);   //直接初始化更灵活,效率更高!

切记,初始化不是赋值,初始化是创建变量并给他赋予新值,而赋值是擦除原来的值并用新值替代的过程。

内置变量初始化规则:在函数体内定义,自动初始化为零。在函数体外,不进行初始化!!

建议每个内置类型的对象都要初始化!!

类的初始化:1有默认构造函数的,如string默认为空字符

            2其它的必须显式的定义

          

         引用reference

          Const引用是指向const的引用,非const引用是指向非const的引用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值