第一章
◆
新建一个Project 名称为:exam2 类型为:Win32 Console Application ,此
时在文件夹exam2下会自动生成一个Debug文件夹和exam2.dsp; exam2.dsw;
exam2.ncb三个文件
◆
在Project建立完成后,需要再建立一个File,名称为:two 类型为:C++
Source File,此时文件夹exam2下自动生成了一个two.cpp文件。
◆程序内容求最大数。
编译后,在Debug文件夹下生成以下文件:exam2.ilk;exam2.pch;exam2.pdb
two.obj
vc60.idb;vc60.pdb
以及一个可执行文件exam2.exe
◆标准C++定义了74个关键字
◆C++数据的使用严格遵从“先说明类型后使用”
◆ 基本运算符及其表达式
算术运算符及算术表达式
一、运算符“/”,当两个操作数均为整数时,所执行的运算为整数,结果为整数。整除运算舍去小数
如:5/4 结果为1
二、但只要有一个操作数是实数,则两个操作数均转换为double型,“/”成为普通的除,结果是实数
如:5/4.0 结果为1.25
三、求余运算符“%”,也称为求模。要求两个操作数是整数。如果两个整数中有负数,则结果的符号与被除数相同。
如:-7%6 结果为-1
7%-6 结果为1
-7%-6 结果为-1
赋值运算符及赋值表达式
复合赋值运算符
+= -= *= /= %=
复合赋值运算表达式仍属于赋值表达式,它不仅可简化书写,而且能提高表达式的求值速度。
自增、自减运算
++ --
如:
i++ 相当于i=i+1;
j-- 相当于j=j-1;
运算符前置的情况:变量的值先增减后引用
运算符后置的情况:变量的值先引用后增减
如:
int i=5,j=5,m,n;
m=++i //先增减后引用,i的值为6,m的值为6
n=j++ //先引用后增减,n的值为5,j的值为6
C++在求逻辑表达式值的时候,采用求值优化算法。其含义是,在求逻辑表达式值的过程中,一旦表达式的值能够确定,就不再继续进行余下的运算。
如:
a=2,b=0,c=3
a||b++||c-- //表达式的结果是:a的值为2,b值为0,c的值为3
◆ 强制类型转换
(type) 表达式
例子:
int a=7,b=5;
float x;
表达式x=a/b的值为1,因为a和b都是整数,该除法将执行整除运算。再将整数结果1转换为单精度类型后进行赋值。
如果希望相除的实数商1.4赋给x就需要将这两个操作或者其中一个操作数进行强制类型转换
X=(float)a/(float)b 或 x=(float)a/b
注:(float)a/b与float(a/b)结果是不一样的。
前者是先将变量a强制转换为浮点数,然后再与整数b进行运算
后者是先进行整除运算,再将整型结果1强制转换为单精度型1.0
规则:
1>强制类型转换不改变表达式本身的值的类型,而只是产生一个临时变量,用来暂存转换后的值,该临时变量引用后即自动释放。上例中的a和b的值都不会变。
2>强制类型转换符的优先级较高,只对紧随其后的表达工起作用,而对其他部分不起作用。如上例中的(float)a/b的含义是先将变量a强制转换为浮点数,然后再与整数b进行运算。
新的C++标准中,强制类型转换采用static_cast const_cast dynamic_cast reinterpret_cast 四个关键字,形式为static_cast<type>,在语法上更加严谨。
◆ 数组
定义:
数组元素个数不能是变量
数组元素个数不能是实数
初始化:
初始化的个数可以少于定义的元素个数,这时从第0个元素开始逐个取得初始化值,其余的元素初始化为0.
使用:
对数组的访问指的是对数组的元素的访问,一般不能直接将数组名作为访问对象,给数组赋值时也必须给每一个元素逐个赋值。
◆ 字符数组
Char string1[10]; //可用来保存10个字符的字符数组
Char city_name1[]={‘N’,’a’,’n’,’J’,’i’,’n’,’g’};
允许直接用字符串常量对字符数组进行初始化
Char city_name2[]=”NanJing”;
注:用字符串常量对字符数组进行初始化时,字符数组会自动加上一个串结束符’/0’.
因此,数组city_name1 实际比city_name2多占用一个字节,存放’/0’。