|
Posted on
2010-08-16 01:05
KurtWang
阅读( 280)
评论()
编辑
收藏
举报
- 标准库4个IO对象:cin cout cerr clog
- 基本变量(int等)需要进行初始化,否则是一个未知值
- 编译错误类型:
- 语法错误:例如括号没对齐
- 类型错误:传递了字符串给整数参数
- 声明错误:使用的名字在使用前没有声明
- 读入未知数目的输入
int sum=0, value; while(std:cin>>value) sum+=value; std::cout<<sum<<endl;
当我们使用istream对象作为条件,结果是测试流的状态,如果流是有效地(也就是说,如果读入下一个输入是有可能的)那么测试成功。遇到文件结束符或遇到无效输入,如读取了一个不是整数的值,则istream对象是无效的。
- 内置类型
整型 |
字符型 |
char(8bit) |
wchar_t(16bit) |
|
|
布尔型 |
bool |
|
|
|
整数型 |
short(16bit) |
int(32bit) |
long(32bit) |
浮点型 |
单精度浮点型 |
float(32bit) |
6位有效数字 |
|
|
双精度浮点型 |
double(64bit) |
10位有效数字 |
|
|
扩展精度浮点型 |
long double(96bit or 128bit) |
10位有效数字 |
|
越界值赋值,会取该值对最大值求模后的值(e.g. 336赋给8位的unsigned char,实际值委336%256=80)。
例题:unsigned short num = 10000; num实际值是? 答案:34464
- 字面值常量
- 20 (十进制) 024(八进制) 0x14(十六进制)
- 字面值常量后加u表示unsigned,加L表示long,无short的字面值常量。
- 默认为double,后加f表示float,后加L表示long double
- 字符字面值前加L表示宽字符
- \ooo,ooo表示三个八进制数,用来定义转义字符,e.g. \062=’2’
- C++是一门静态类型语言(也称强类型语言,同类的有Java),强类型语言在编译时会做类型检查(比较:javascript 弱类型语言)
- 变量名组成:字母,数字,下划线。变量名大小写敏感
- 定义变量
- 直接初始化:int ival(1024);
- 复制初始化:int ival = 1024; (复制初始化和赋值不同,赋值是擦除对象的当前值并用新值代替,初始化是创建变量并给他赋初值)
- 直接初始化更好
- 内置类型变量的初始化:函数体外定义的都初始化为0,函数体内不初始化
- 类类型变量的初始化:调用默认构造函数
- 声明和定义
- 声明:表明变量的类型和名字,通过extern关键字声明变量而不定义它。为了说明变量定义在其他地方。(场景:a.cpp声明并定义变量n,b.cpp中声明extern n,这样在b文件里也能访问到变量n
- 定义:也是声明,为变量分配存储空间,并指定初始值。在一个程序中,变量有且仅有一个定义。
- const对象
- 定义时必须初始化。
- const变量默认为文件的局部变量(而非const变量默认为extern),指定const变量为extern,才可在其他文件中访问。 file1.cc: extern const int bufSize = 1; file2.cc: extern const int bufSize;
- 引用是复合类型
- 声明时必须初始化,而且必须是同类型的对象。
- int ival=1024; int &refVal = ivale;(对)
- int &refVal2; (错,未初始化)
- int &refVal3 = 10;(错,类型不对)
- 引用是别名,不可更改绑定到其他对象
- const引用:指向const对象的引用,const引用可以初始化为不同类型的对象或右值(非const引用不行),推荐使用const引用作为函数参数(可接受字符串常量)。
- 枚举:第一个成员为0,以后递增,也可以显示的定义某个枚举常量的值,之后的枚举常量以一递增。
- struct和class:struct第一个访问标号钱的任何成员都隐示的指定为public,class则为private
- 避免多重包含:
#ifndef XXXXX
#define XXXXX
#endif
|