C的数据和表达式四川内江第二中学.docx
- 文档编号:25681782
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:27
- 大小:29.81KB
C的数据和表达式四川内江第二中学.docx
《C的数据和表达式四川内江第二中学.docx》由会员分享,可在线阅读,更多相关《C的数据和表达式四川内江第二中学.docx(27页珍藏版)》请在冰豆网上搜索。
C的数据和表达式四川内江第二中学
第一章《C++的数据和表达式》
内江二中C++培训讲稿
袁武廷2010年2月
课时2:
C++的词法符号
1、定义:
词法符号是程序中不可再分的单位。
2、C++的词法符号共有六类,它们是:
①关键字;②标识符;③常量;④字符串;⑤运算符;⑥标点符号。
它们是C++程序的“基石”,必须认真掌握每种词法符号。
本节课我们学习:
关键字、标识符和标点符号三类。
(一)关键字
关键字又叫保留字,是C++系统预定义的符号,在程序中具有固定的意义,程序员不能重新定义用作它用。
C++的关键字有几十个,随着同学们学习的深入,掌握的数量就会越来越多。
前面例题我们见过的以及马上我们会学到的有:
doublefloatifelse
charintvoidlongshortsignedunsigned
(二)标识符
是程序员自定义的名字,主要用来给“变量、函数、类”等命名。
1、标识符的组成
(1)大写字母;
(2)小写字母;(3)数字符号0到9;(4)下划线“_”。
(除了此四种字符外,不能有其它的符号)
2、组成标识符的规则
*字母或下划线开始;*其后可以跟0个或多个字母、数字、下划线。
(1)合法的标识符
Mysteryresultdouble_list_workof_old_977
(2)不合法的标识符
12bD$7_i
(3)字母区分大小字
addAddaDdADd是四个不同的标识符
(4)标识符不能是前面说的关键字
经验
(5)定义标识符时可以用单词或缩写来定义,尽量能使标识符能“顾名思义”,这样就会增加标识符的可读性从而增加整个程序的可读性。
如返回结果的变量,它的标识符就可定义为:
result
(6)由于C++系统库中的符号都是以下划线开头的,因此程序员在自己的程序中定义的标识符,最好不要用下划线开始,以免同系统库中的符号相冲突。
最好也不要用连续的两个下划线。
如:
最好不用_result来标识返回结果的变量。
最好不出现形如:
r__kk两个连续的下划线。
(三)标点符号
#(){},:
;等等
C++要求在程序的某些地方必须写上相应的标点符号,但不表示任何实际的操作。
如:
词句结束时,必须写上“;” { } 与()须成对出现。
[说明]
1、什么是C++中的“空白”?
在C++程序中,输入空格、制表符(TAB)、回车换行符,将产生C++所谓的“空白”。
空白用来表示词法符号的开始和结束,多余的空白将会被忽略。
如:
inti;floatf; 与inti;floatf;是等价的,都是由六个词法符号组成。
又如:
inti;
floatf;
cin>>f;
i=(int)f;
与
inti;
floatf;
cin>>f;
i=(int)f;
两个程序块也是等价的。
2、C++中的注释被法成空白对待
如:
cin>>f;//输入一个值给f变量
3、C++中,编译器在分析词法符号时,总是提取最长的有效符号。
如integer被分析成为一个标识符(表示整数),而不被分析成int和eger,虽然int也有意义。
课时3:
C++基本数据类型
引言:
①程序数据都必须是具有某种数据类型的数据
②数据的数据类型限制着数据的两个方面的性质:
一是数据类型定义了该数据的存储表示;二是数据类型定义了该数据所能参加的运算的集合。
③描述数据的数据类型的名字叫做类型名。
类型名:
可以是一个简单的关键字,也可以是一个表达式。
如前面程序中我们用到的double它定义的数据的类型就是双精度型。
④C++的数据类型有很多,主要分成两类:
一是“基本类型”;二是“派生类型”。
(一)C++的基本数据类型
类型名位数范围
char8-128到127
int16-32768到32767
float32-3.4E-38到3.4E+38
double64-1.7E-308到1.7E+308
void0无值
(1)char字符型;int整型;float浮点型;double 双精度浮点型;void 无值型
(2)位数,是指这种数据类型的数据点用内存的大小
(3)范围,是指这种类型的变量,能接受的数的范围。
(4)char型的变量:
用来保存8位的Ascii字符;int型的变量用来保存整数;float和double型的变量用来存贮不同精度的有小数点的数;void主要用于定义函数的返回值。
(二)C++基本类型的修饰名词
shortlongsignedunsigned
上面四个修饰符用于改变基本数据类型的含义,以便更加适合于各种实际情况的需要。
加上了修饰符的类型仍是基本数据类型(不是前面说的派生类型)
char-128--127
signedchar-128--127
unsignedchar0-255
shorint-32768--32767
signedshorint-32768--32767
unsignedshorint0-65535
int-32768--32767
signedint-32768--32767
unsignedint0-65535
longint-2,147,483,648—2,147,483,647
signedlongint-2,147,483,648—2,147,483,647
unsignedlongint0—4,294,967,295
float3.4E-38—3.4E+38
double1.7E-308—1.7E+308
longdouble3.4E-4932—1.1E+4932
1、当用short、long、signed、unsigned 修饰int时int可以省略,如:
unsignedintx;可写成unsignedx;
longintx可写成longx;
2、当未使用signed或unsigned修饰int时,C++默认为是有符号的,即是默认是用signed修饰。
3、程序员在使用变量时,应该根据实际情况中数据种类(带不带小数或是表不表示ASCII字符等)和这个数据的取值范围,来选择将变量定义成为何种数据类型。
[例题]我想用一个变量来表示普通中学的在读的学生学号,如果这个变量的名字用标识符num来表示,请同学们想想该变量应该选择什么数据类型?
4、字符变量不仅能存贮ASCII字符,也可以用来存贮-128至127或是0到255之间的整数,如果你的程序中的某个数据是这个取值范围,你也可以用char型的变量来存贮。
5、在选择变量的类型时,要尽量根据数据的情况来选择类型,在估计不准时,肯定是宁愿选大范围的,这样程序不会出错。
课时4:
常量
引言:
①常量是用来表示固定的数值或字符值的词法符号。
②常量一旦定义,值就不能更改。
③常量都具有数据类型,由常量的表示方法决定。
④常量在程序中不用申明,就直接使用。
(一)整型常量
在程序中可用“十进制”、“八进制”、“十六进制”三种进制表示整型常量。
1、十进制整型常量
由0到9数字组成;书写时不能以0开始;无小数部分。
2、八进制整型常量
由0到7数字组成;书写时以0开始;无小数部分。
3、十六进制整常量
由0到9和A到F组成;书写时以0x开始;无小数部分。
[说明]
(1)任何一个整常量后缀L(或l),则其数据类型为满足longint或unsignedlongint值域的第一个数据类型。
5L属于longint类型;
2,147,483,648L属于unsignedlongint类型
(2)任何一个整常量,后缀u,则表示其数据类型为满足
unsignedint或unsignedlongint值域的第一个数据类型。
(3)一个常量后可以同时后缀u和L(顺序大小写无所谓)
则表示其类型一定是unsignedlongint类型
如:
5LU
(4)当一个整型常量不存在后缀时,则该整型常量的类型为满足下列数据类型的值域的第一个类型:
10进制:
int–-longint—unsignedlongint
8进制:
int—unsignedint—longint—unsignedlongint
16进制:
int—unsignedint—longint—unsignedlongint
(二)浮点常量
1、由整数部分和小数部分组成(如2.5)
2、浮点常量只支持10进制
3、可用科学法表示
0.2E+13
.2E+13
1.4E-8
3E+9
4、浮点常量的数据类型默认为double,如上面的4个数均为double类型,但可以在后在加上f,将其类型指定为float类型。
如:
2.5f与2.5
5、浮点常量后缀l就是longdouble数据类型
2.52.5f2.5l
(三)字符常量
1、用单引号括起来的字符称为字符常量
‘a’‘\n’‘r’‘\x61’
2、字符常量的类型都是char数据类型
3、C++的转义序列
\a 表示响铃
\n新行
\t水平制表符(TAB)
\v垂直制表符
\b回退符
\r回车符
\f页馈进符
\\反科杠\
\’单引号’
\”双引号”
如果用单引号将上面的括起来,它们都是一个字符。
4、可用8进制或16进制来表示ASCII字符集中的任何字符。
形如:
\nnn8进制的字符
\xnnn16进制表示的字符(此处的x就必须是小写的)
如a字符的十六进制数是61,则a可以表示成:
’\x61’
(四)字符串
1、字符串,是由一对双引号括起来的字符序列。
“Thisisastring\n”
2、字符串是一种特殊的常量,它的数据类型不是基本型,这一点我们后面再讲。
3、在字符串中使用16进制或8进制转义序列来表示字符时,C++按最长的有效的长度提取转义序列。
如:
Cout<<”Error:
\x07Dividedbyzero\n”;
其中:
\x07是响铃的意思
\x07D是字符}的意思
所以这个语句最终在屏幕上输出:
}ivdedbyzero
不会有铃声。
4、由于双引号起特殊的作用,如果要在字符串中表示双引号,就必须使用转义序列,如:
想在屏上显示
PleaseEnter“good”
必须写成:
cout<<”PleaseEnter\”goot\”\n”;
Main()
{
Cout<<”thisisastring\n”;
Cout<<”hello,\tword!
\n”;
Cout<<”Error:
\07Dividedbyzero\n”;
Cout<<”Error:
\x007Dividedbyzero\n”;
Cout<<”Thisisoneline”;
Cout< Cout<<”Pleaseenter\”good\”\n”; } 课时5: 简单说明 1、程序中每个变量都必须要有一个名字(合法标识符),用变量的名字来存取变量; 2、变量是用来表示数据的,程序中的数据都必须是具有某程数据类型的数据,因此也必须将变量定义成为其所表示的数据类型。 如: 用一个变量来表示一个中学的学生学号 变量名你取为: num 类型你定为: unsignedint 则在程序中要这样定义: unsignedintnum; 3、简单说明变量的一般格式是: 数据类型名 变量1,变量2,…,变量n; 如: floatv1,v2,v3; 这样说明的变量也叫做简单变量 定义了三个名字分别是v1,v2,v3,类型都是float的变量,由于v1、v2、v3、都是float类型,因此也就定义了这三个变量能参加哪些运算以及运算的性质。 [例题] #include main() { inti,max; i=0; max=0; floatcurrent,square,cube; current=1.5f; square=current*current; cube=square*current; cout< < } (1)定义了3个浮点弄变量,2个整型变量。 (2)任何简单变量都可以直接用于输入输出操作 floatf; cin>>f; cout< 课时6: 枚举类型 前在的基本型以及基本型前面加上修饰词的类型,均是C++系统预定义好的数据类型,其实程序员在程序中也可以根据自己的算法,自己定义符合C++语法规则的数据类型。 比如本课要讲的“枚举类型”。 1、枚举类型是程序员根据自己的算法需要自定义的类型。 2、枚举类型的定义格式: emun枚举标记{枚举常量表}; 如: emuncolor{RED,BLUE,GREEN,YELLOW}; (1)emun是C++系统的关键字 (2)color是你自定义的名字(符合标识符的语法),也是你建立的枚举类型的类型名。 (3){RED,BLUE,GREEN,YELLOW}是一个集合,里面是你自己定义的这种类型的数据的定义域。 比如: colorx; 意思就是说你用你自定义的数据类型color定义了一个变量x,此变量x就只能被赋予该定义域的元素。 例如: x=RED;//是合法的 x=ywt;//是不合法的 课时7: 基本运算符和表达式 引言: (1)运算是对数据的处理过程; (2)记述各种不同运算的符号称为运算符; (3)参与运算的数据称为操作数; (一)C++的运算符表 优先级 运算符 例子 结合性 1 () [] -> . : : ++ -- (a+b)/4; array[4]=2; ptr->age=34; obj.age=34; Class: : age=2; for(i=0;i<10;i++)... for(i=10;i>0;i--)... lefttoright 2 ! ~ ++ -- - + * & (type) sizeof if(! done)... flags=~flags; for(i=0;i<10;++i)... for(i=10;i>0;--i)... inti=-1; inti=+1; data=*ptr; address=&obj; inti=(int)floatNum; intsize=sizeof(floatNum); righttoleft 3 ->* .* ptr->*var=24; obj.*var=24; lefttoright 4 * / % inti=2*4; floatf=10/3; intrem=4%3; lefttoright 5 + - inti=2+3; inti=5-1; lefttoright 6 << >> intflags=33<<1; intflags=33>>1; lefttoright 7 < <= > >= if(i<42)... if(i<=42)... if(i>42)... if(i>=42)... lefttoright 8 == ! = if(i==42)... if(i! =42)... lefttoright 9 & flags=flags&42; lefttoright 10 ^ flags=flags^42; lefttoright 11 | flags=flags|42; lefttoright 12 && if(conditionA&&conditionB)... lefttoright 13 || if(conditionA||conditionB)... lefttoright 14 ? : inti=(a>b)? a: b; righttoleft 15 = += -= *= /= %= &= ^= |= <<= >>= inta=b; a+=3; b-=4; a*=5; a/=2; a%=3; flags&=new_flags; flags^=new_flags; flags|=new_flags; flags<<=2; flags>>=2; righttoleft 16 for(i=0,j=0;i<10;i++,j++)... lefttoright 1、按运算符同操作数的关系,运算符会成: 一元运算符;二元运算符;三元运算符。 2、按运算符和操作数的运算性质,又分成算术运算、逻辑运算、关系运算、移位运算和其它运算。 3、表达式是由操作数和运算符组成的符号序列,每个表达式都产生单一的值,并且这个值肯定具有某种数据类型,这个类型就是表示式的类型。 4、常量表达式可以出现在常量能出现的地方。 5、一个变量或是一个常量也是一个表达式。 一个表达式的值可以用来参与其它运算,即可用作其它运算符的操作数,这样就可以组成复杂的表达式了。 5a5+aa+ba*(b+c) 6、表达式的求值顺序: 先计算括号内的表达式,再计算括号外的表达式,优先级高的运算符先运算,优先级低的运算符后运算。 7、如果一个运算符对其操作数从左向右进行规定的运算,则称这个运算符是右结合的。 反之为左结合。 2+3对“+”这个运算符,其操作数是左边加右边的操作数。 “+”是右结合的。 8、当一个表达式中出现各种运算符时,优先级和运算符的结合性最终决定表达式的求值顺序。 (二)算术运算符 2-一元运算符取负,取操作数的负值 3*/%二元 4+-二元 (1)“%”是取模运算符,就是求两个整数相除的余数,如7%5表达式的值是2。 要求两个操作数必须是整数。 (2)“/”: 当此运算符用于两个整数相除时,结果仍是整 数。 如7/5结果是15/7结果是0 同学们看出“%”与“/”的意思没有? 当他们用于整数运算时,一个求余数,一个求整数的商。 (3)二元算术运算符是右结合的,即从左向右进行运算。 (4)算术表达式计算中的溢出问题: ①被零除或浮点溢出会作为一个错误导致程序终止。 ②整数溢出不会认为是一个错误。 在时需要利用整数的溢出进行一些较低级的程序设计。 但是,这样也就是说C++不能报告整数的溢出问题,一旦出现这种情况,很难找出错误来。 main() { inti,j,k; i=1000; j=1000; k=i*j;//发生溢出了哈,超过了int类型的值域,不报错 cout< } int类型的k变量最多能保存32767,而i*j的结果是1,000,000 将这个结果赋给k,就发生了整数溢出。 但C++又不报错,运算结果肯定是错误的。 可以通过将三个变量都定义成为long类型,得到正确的结果: main() { longinti,j; longintk; i=1000L; j=1000L; k=i*j; cout< } (三)关系运算 6<<=>>= 7==! = 1、关系运算符是右结合的,即从左向右进行运算。 运算的结果是整数,操作数满足运算符的比较关系时,运算结果为1,若不满足比较关系,运算结果为0。 2、关系运算符的优先级(6,7)低于算术运算符(2,3,4)。 如: n+m (四)逻辑运算符 2! 一元运算符 11&&二元 12||二元 1、右结合的运算符。 2、运算结果只有1或是0 i&&j只要i或j中有一个是0,结果为0; 两个都非零时,结果为1;两个均为0结果为0。 i||j只有i或是j中有一个非0,结果为1;两个均为0时,结果为0。 ! i当i为0时,结果为1当i非零时,结果为0 3、关系运算符的优先级高于&&和|| i 先进行两个关系运算,然后再进行逻辑运算 (五)位运算符 1、在计算机中各种数据都是用二进制的位表示出来的。 如int型的数据用16位二进制表示,char型数据用8个二进制位表示,如小写字母a: 0110001 2、前面学习过的运算符都是对数的所有位进行操作的,在C++低级程序设计中,常常需要检查或设置变量中的某几位的值。 C++提供了六个位运算符,用于处理组成整型变量的位。 &|^<<>>~ (1)位取反运算 是一元运算符,对所作用的数逐位取反(0变1,1变0) main() { unsignedchara; a=~0x9a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 的数据和表达式四川内江第二中学 数据 表达式 四川 内江 第二 中学