C++ Primer Plus 一

1.重写库函数:

在main方法之前先声明,例如: double sqrt(double);

在main方法之后,给出新的sqrt方法的实现,例如:

double sqrt(double d)

{

  return 2.5;

}

2.一些说明

main不是关键字,由于它不是语言的组成部分,不过,他是一个必不可少的函数的名称。可以用作变量名(在一些很神秘的以至于无法再这里介绍的情况中,将main用作变量名会引发错误,由于它在这种情况下都是容易混淆的,因此最好不要这样做).同样,其他函数名和变量名也都不能是关键字。不过,在程序中将同一个名称(比如cout)用作对象名会把编译器搞糊涂。也就是说,在不适用cout对象进行输出的函数中,可以将cout用作变量名,单不能再一个函数中同时将cout用作对象名和变量名。

3.关于给遍历命名:

以两个下划线或下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标示符。

C++对于名称的长度没有限制,名称中所有的字符都有意义。这一点使得C++与ANSIC(C99)标准有所区别,后者只保证名称中的前63个字符有意义(在ANSIC中,前63个字符相同的名称被认为是相同的,即使第64个字符不同).

4.关于位与字节

计算机内存的基本单位是位(bit).可以将位看做电子开关,可以开,也可以关。关表示值0,开表示值1.8位的内存块可以设置出256种不同的组合,因为每一位都可以有两种设置,所以8位的总组合为为256种。因此,8位单元可以表示0~255或者-128到127.每增加一位,组合数便加倍。

字节(byte)通常指的是8位的内存单元。从这个意义上说,字节值的就是描述计算机内存量的度量单位。1KB=1024字节,1MB=1024KB

5.C++特殊赋值

除了正常的给变量赋值之外,还可以这样:

int i=12;

int i(12);

两者等效。

 6.符号常量--预处理器方式

#define INT_MAX 32767

和 #include一样,也是一个预处理器编译指令。该编译指令告诉预处理器:在程序中查找INT_MAX,并将所有的INT_MAX都替换为32767.因此#define编译指令的工作方式与文本处理器中的全局搜索和替换命令相似。#define是C语言遗留下来的。C++有一种更好的创建符号常量的方法(使用关键字const),所有不会经常使用#define。不过,有些头文件,尤其是那些被设计成可用于C和C++的头文件,必须使用#define.

7.输出

cout默认输出的是十进制的数值,如果想输出八进制或者十六进制的数值可以显示控制符:

cout<<hex<<"十六进制"<<endl;

cout<<oct<<"八进制"<<endl;

在修改格式以前,原来的格式一直有效.

8.转义序列

换行符 : \n,十进制  10, 十六进制0xA

水平制表符  \t,十进制 9,十六进制0x9

垂直制表符 \v,十进制 11, 十六进制0xB

退格  \b ,十进制 8,十六进制0x8

回车 \r ,十进制 13,十六进制0xD

振铃 \a|,十进制7,十六进制0x7

反斜杠 \,十进制92,十六进制0x5C

问号 \? ,十进制 63,十六进制0x3F

单引号 \' ,十进制 39,十六进制0x27

双引号 \",十进制 34,十六进制 0x22

9.数值转换潜在的问题

1>将较大的浮点类型转换为较小的浮点类型,例如将double转换为float,问题:精度降低,值可能超出目标类型范围,在这种情况下,结果将是不确定的

2>将浮点类型转换为整型,问题:小树部分丢失,原来的值可能超出目标类型的取值范围,在这种情况下,结果将是不确定的。

3>将较大的整型转换为较小的整型,如将long转换为short,问题:原来的值可能超出目标类型的取值范围,通常只复制右边的字节。

posted @ 2012-01-05 17:24  Kingdom_0  阅读(276)  评论(2编辑  收藏  举报