您的位置:首页 > 编程语言 > C语言/C++

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

2014-01-28 22:38 288 查看
第二章 变量和基本类型

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++中,int占4byte,short占2byte,long占4byte或8byte。

 

经验: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
plaincopy

#include <iostream>  

  

using namespace std;  

  

int main()  

  

{  

  

cout<<"2M"<<endl;  

  

return 0;  

  

}  

修改后

[cpp] view
plaincopy

#include <iostream>  

  

using namespace std;  

  

int main()  

  

{  

  

cout<<"2\tM\n";  

  

return 0;  

  

}  

求2^10

[cpp] view
plaincopy

#include <iostream>  

  

using namespace std;  

  

int main()  

  

{  

  

int value=2,pow=10,res=1;  

  

for(;pow>0;pow--) {  

  

res=res*value;  

  

}  

  

cout<<"the result of 2^10 is "<<res<<endl;  

  

return 0;  

  

}  

习题2.11

[cpp] view
plaincopy

#include <iostream>  

  

using namespace std;  

  

int main()  

  

{  

  

int value,pow,res=1;  

  

cout<<"please enter two numbers(value and power):"<<endl;  

  

cin>>value>>pow;  

  

int pow1;  

  

pow1=pow;  

  

for(;pow>0;pow--) {  

  

res=res*value;  

  

}  

  

cout<<"the result of "<<value<<"^"<<pow1<<" is "<<res<<endl;  

  

return 0;  

  

}  

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的引用!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: