1.Visual C++的基本概念
(1)标识符:
以字母、数字、下划线组成的字符序列,第一个字符必须是字母或下划线。
不能与关键字同名,且不含空格标点符号和其他字符,同时区分大小写。
例: 不正确的:enum、int、2b、 a+3、a-3、#include 等均不是正确的标识符
正确的:_32、include、Int、a_3、abc
(2)数据类型:
字符型(char,1)、整型(int ,4)、实型(float,4), 双精度(double,8),无值型(void,0)、布尔型(bool,1)
int之前还可以用unsigned、signed、short、long修饰,表示不同字节的整数类型
char之前还可以用unsigned、signed修饰
(表达式的数据类型以整个表达式中最高的数据类型为准)
例:’1’+’2’、’1’+2、18/3+5. 、18+5.0/2,注意常用数学函数的返回值类型
(3)常量:(字面常量、标识符常量)
整型常量——有十进制、八进制(以0开头)、十六进制(0X(x)开头)三种形式;
实型常量——有普通和科学计数法两种形式。科学计数法时,e的前面必须要有数字,且在e之后必须是整数;(注意2.5f和2.5的区别,注意2.0和2.)
字符型常量——必须以单引号引起来,转义序列以“\”开始,用数值描述时有\ddd和\xhh两种形式,即只能是一个八进制或十六进制的数,取值范围在0~255,且十六进制必须以x开头。
字符串型常量——用双引号括起来,存储时系统默认在结尾添加“\0”。区分sizeof(字符串)和strlen(字符串)的值。
标识符常量的定义—— #define a 4
常变量的定义——const int a=4;
注意标识符常量和常变量两者的异同点
(4)变量:
需遵循“先定义后使用,先赋值再操作”的原则。
(5)算术运算符:(详见书,几个需要注意的如下)
“/”运算符:两边都是整型,则做整除运算(去尾取整),有一个是实型,则是真正的商。
“%”运算符:取余,其两边都必须是整型数。
(6)关系运算符:
关系成立,表达式结果为整数1,否则为整数0。
(7)逻辑运算符:! && ||
非0为真,用整数1表示,0为假。注意逻辑运算表达式计算时的优化问题(短路特性)。
(8)sizeof()运算符:用于计算某一操作数类型的字节数。
(9)赋值表达式:
=左边只能是变量,a++或a- -不能放在=左边
=两边数据类型不同时,以左边的数据类型为准
=的优先级仅高于逗号运算符
复合的赋值表达式中,将复合的赋值运算符右边的部分看作一个整体进行处理
(10)逗号表达式:
从左往右依次计算各表达式,以最后一个表达式的值作为整个逗号表达式的值。
(11)强制类型转换:
(type)表达式 或 type(表达式)
(12)优先级顺序:
单目优于双目,双目优于三目,在此基础上,算术→位移(插入、提取)→关系→位→逻辑→条件→赋值→逗号。(优先级的序号越小,其优先级越高)
(13)自增(++),自减(--)运算符
谁在前先做谁,只能对变量进行++或- -。
a++或a--的结果可理解为表达式,++a或--a的结果可理解为变量。
常与逻辑运算的短路特性合在一起考查
(14)数据的输入和输出:C++语言本身没有输入输出语句。(P36)
在输入数据的过程中,如果输入的一行仅仅是一个回车时,cin把该键作为空格处理,仍等待输入数据。
需要注意的是,用cin输入数据时,实际输入数据的个数、类型及顺序,必须与cin中列举的变量一一对应,否则输入的数据不准确。列如:
int b;
char c='x';
cin>>b>>c;
cout<<b<<','<<c<<endl;
若输入a f,则输出的是0 x .
则变量b的值为0,而变量c没有获得输入的值,并使后面的cin无法正确提取数据。
(15)C++语言用非零值表示逻辑“真”值。
2.Visual C++的基本语句(顺序、选择、循环)
(1)单选语句:
if(表达式) S
表达式的值非0(成立),则执行S;否则,跳过S直接执行后继的语句。
(2)二选一语句:
if(表达式)
{ S1;}
else
{ S2;}
* 表达式可以是符合C++语法规则的任一表达式
* 表达式非0(成立),执行S1;否则执行S2.
(3)嵌套的条件语句:
if(表达式1)
{ S1; }
else if(表达式2)
{ S2; }
……
else
{ S; }
注意:else和谁配对?与最靠近它的且没有else与之配对的if进行配对
(4)条件运算符: ?:
表达式1?表达式2:表达式3
表达式1成立,以表达式2的值为整个表达式的结果,否则以表达式3的值为整个表达式的结果
(5)开关语句switch语句:
switch(表达式)
{
case 常量表达式1: S1; break;
case 常量表达式2: S2; break;
逗号表达式的运算顺序……
default: S3;
}
例:int a=7;
switch(a%5)
{case 0:cout<<a++;
case 1:cout<<++a;
case 2:cout<<a--;
case 3:cout<<--a;
default:cout<<a;}输出的结果是755.你知道是为什么吗?
int k=0;
char c='A';
do{
switch(c++){输出的结果是4,但是你猜猜如果把c++改成++c结果会是什么呢,没错就是2.啦啦啦
case 'A':k++;break;
case 'B':k--;
case 'C':k+=2;break;
case 'D':k=k%2;continue;
case 'E':k=k*10;break;
default:k=k/3;}k++;
}while(c<'G');
cout<<k<<endl;
* 表达式和常量表达式的值只能是整型、字符型或枚举型。
* 根据表达式的值选一个对应的常量表达式后的语句执行,直到碰到break或switch的}结束
* default的位置没有规定,但需考虑是否要添加break
* if和switch使用的注意:前者可以表示连续的条件区间也可以表示离散的条件,而后者只
能表示离散的条件,因此,任一个switch结构可以转换成if结构,但反之不行。当用switch表示连续的条件时需设法将连续的条件转换成离散的形式。
(6)循环语句:
while(表达式)
S
执行过程:表达式非0做循环体S。循环体有可能一次也不被执行。
do{
S
}
while(表达式);(分号不可以忘)
执行过程:先执行循环体S,再判断表达式的值,非0继续循环。循环体至少做一次
for(<表达式1>;<表达式2>;<表达式3>) S
执行过程:
表达式1、2、3均可省略,若省略,需在合适的位置进行处理
* 三种循环可以相互转换,不管用哪种循环,一定要把握好循环条件(什么样的情况下循环)、循环体(循环做什么)
* 不能出现死循环!
(7)break、continue语句
break——跳出整个循环,不再循环(结束该层的循环)
continue——结束本次循环,进入下一次循环
3.函数
(1)C++源程序、目标程序、可执行程序的后缀名。
(2)任何一个C++程序必须有一个且只能有一个main函数。
(3)函数要先定义后使用,若先使用后定义需在使用前加函数原型说明:(绿皮书p32.T12)
列如:int f1(int,int=1);此原型声明即是对的。
int f2(int=1,int);此原型声明即是错的。
(4)函数不能嵌套定义,但可以嵌套调用(递归)。
(5)形式参数和实际参数:在函数定义中,在参数表中一一列出的参数称为形式参数(对于函数体来说,它们是已知量、要在函数体中进行处理的量,无需再重新定义);在函数
调用时依次列举的参数称为实际参数(传递给函数实际处理的值或量)。即当调用函数时,实参和形参各占一个独立的存储单元。
(6)函数的返回值:
每个函数都可以有return语句。
若函数无返回值,则可不写return语句,或直接写“return;”,若函数有返回值,则必须有return语句。C++语言的函数中,return语句中的表达式的类型可以与函数的类型不一致。
一个return只能返回一个值,同一时刻只有一个return语句有效。
(7)函数的调用:(各函数之间即允许直接递归调用,也允许间接递归调用)
语句调用、表达式调用
函数调用时,实参和形参之间有传值、传址、引用三种不同的数据传递形式
(8)标识符的作用域:
*这里的标识符其实包括了变量和常量,所谓作用域则说明了标识符能被使用的范围。
*作用域分为块作用域、文件作用域、函数原型作用域、函数作用域、类作用域和命名空间作用域
*块作用域:在块内说明的标识符,其作用域始于标识符的说明处,止于块的结尾处。只能在该块内引用。
*文件作用域:在所有函数之外定义的变量称为全局变量。全局变量(标识符)的作用域。从定义位置开始到该源程序文件结束。也可通过extern将其作用域外延到包含它的工程中的其它文件。
*同一块内不允许出现同名的局部变量,不同块作用域内允许,当两个块重叠的情况下出现局部变量重名,则遵循“县官不如现管”的原则。
*局部变量和全局变量重名时,也遵循“县官不如现管”的原则。此时若想在同名的局部变量作用域内强制访问该全局变量可通过域作用符(::)访问
(9)变量的存储类型:auto、static、extern、register
在C++语言中,函数的默认存储种类是extern。
在C++语言中,全局变量的默认存储种类是extern。
auto类型的变量在程序运行到定义处系统为之分配内存,在其作用域完结处系统自动回收其存储区域
static类型的量分为static局部变量和static全局变量。两者均在程序一运行时系统就为其分配内存,但它们的作用域仍遵循各自的作用域特性,static局部变量会出现虽存在但不能被访问(不在作用域范围内)的情况。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论