C++初步知识数据类型与表达式.docx
- 文档编号:28150469
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:19
- 大小:35.01KB
C++初步知识数据类型与表达式.docx
《C++初步知识数据类型与表达式.docx》由会员分享,可在线阅读,更多相关《C++初步知识数据类型与表达式.docx(19页珍藏版)》请在冰豆网上搜索。
C++初步知识数据类型与表达式
第一章C++初步知识
1.1C++概述
1、C++是软件的专业开发工具。
VB等是非专业的软件开发工具
2、UNIX操作系统的绝大部分代码都是用C语言开发的,C语言也因此风靡世界。
3、C++保持与C兼容,另外,用C++编写的程序的可读性更好,代码结构更为合理,可直接在程序中映射问题空间的结构;
4、C++应用领域众多,它尤其适用于中等和大型的程序开发项目。
从开发时间、费用到形成的软件的可重用性、可扩充性、可维护性和可靠性等方面都显示出C++的优越性。
1.2最简单的C++程序
【例1.1】输出一行字符:
”ThisisaC++program.”
#include
usingnamespacestd;//使用命名空间std
intmain()
{cout<<"ThisisaC++program.\n";//用C++的方法输出一行
return0;
}
ThisisaC++program.
【例1.2】说明C++构造的示例程序。
/*输入两个整数,输出其和的C++示例程序*/
#include
voidmain()
{
inta,b;
cout<<“Entertwointeger:
”;
cin>>a>>b;
intresult;
result=a+b;
cout<<”Thesumof”< <<“=”< } Entertwointeger: 1258 Thesumof12+58=70 1.注释 a.注释的内容不执行: C++编译器跳过程序中的注释,不处理注释的内容。 b.注释的作用: 使用注释来描述程序的功能,完全是为了增强程序的可读性并提供理解程序的线索。 c.如何使用注释: 符号“//”告诉编译程序,本行“//”之后的所有内容都是注释;而符号“/*”和“*/”告诉编译器在“/*”和“*/之间的内空都是注释。 注释符号“//”适合短的只占一行的注释,而“/*...*/”适合于长的占用多行的注释。 d.空格: 程序文件的书写格式是自由的,空格起分隔单词的作用(多个空格符仅被当作一个空格符看待)。 在上面的程序中,通过恰当地使用空格和空行,也可增强程序的可读性。 2.包含文件及头文件 C++语言包含文件的格式有两种。 3.语句 语句: 在C++语言中,以分号结尾的句子称为语句。 例如: inta,b; 一行多句: 对于短的语句,也可以一行写多个语句。 例如: inta;floatfp;charsc; 4.标准输入与输出 标准输出: cout一般是指输出设备显示器 标准输入: cin一般是指键盘 cout和cin称作标准输出/输入流,在iostream.h中定义,它表示标准输出/输入设备,标准输出一般指的是屏幕,标准输入指的是键盘。 运算符<<把它的右边内容在屏幕上显示出来(变量与表达式的值或由双引号括起的字符串)。 运算符>>将键盘中输入的一个值,送到它右边的变量中保存起来。 上述程序运行之后,在屏幕上可以看到下面这条信息: Entertwointeger: 光标在冒号后面闪烁,等待输入两个数。 例如输入第一个数5,按一下空格键,再输入第二个数25,然后按回车键,这时程序就读入所输入的数,5送给a,25送给b,然后开始执行以后的语句。 5.新行 在程序中,“\n”称为新行符。 C++系统还提供一个操纵算子endl,它的功能和新行符一样,也是开始一个新行。 6.主函数 这个程序中以main开始的部分定义了一个函数,该函数规定了该程序的功能。 main是函数名,在函数名之后紧一对圆括号。 所有的C++程序都必须有一个名为main的主函数。 这是程序员和C++系统之间的约定: 程序执行的开始点是main函数中的第一条语句。 一个C++函数中的任何成分被括在一对花括号(“{“和}”)中,在函数main的后面的右圆括号后紧跟一个左花括号,表示“这个函数从这里开始”,最后的右花括号表示“这个函数在这里结束”,花括号括起来的部分称作函数体,而函数名main和它后面的一对圆括号称为函数头。 函数体由一系列的C++语句组成,这些语句描述这个函数怎样实现它的功能。 【例1.3】求两个数中的大者 #include usingnamespacestd; intmain() {intmax(intx,inty);//对max函数作声明 inta,b,c; cin>>a>>b; c=max(a,b);//调用max函数 cout<<"max="< return0; } intmax(intx,inty)//定义max函数 {intz; if(x>y)z=x; elsez=y; return(z); } 【例1.4】包涵类的C++程序 #include usingnamespacestd; classStudent//声明一个类,类名为Student {private: //以下为类中的私有部分 intnum;//私有变量num floatscore;//私有变量score public: //以下为类中公用部分 voidsetdata()//定义公用函数setdata {cin>>num;//输入num的值 cin>>score;//输入score的值 } voiddisplay()//定义公用函数display {cout<<"num="< cout<<"score="< }; };//类的声明结束 Studentstud1,stud2; //定义stud1和stud2为Student类的变量,称为对象 intmain()//主函数首部 {stud1.setdata();//调用对象stud1的setdata函数 stud2.setdata();//调用对象stud2的setdata函数 stud1.display();//调用对象stud1的display函数 stud2.display();//调用对象stud1的display函数 return0; } 第二章数据类型和表达式 2.1C++的数据类型 C++的数据类型规定了它们的存储表示以及可以对它进行的操作,描述该类型的名字称为类型名。 数据类型分为: 基本数据类型和构造数据类型 指针类型引用类型空类型(void)。 基本数据类型是C++预定义的类型,是C++类系统的基本组成部件,基本数据类型是字符类型、整数类型(简称整型)、浮点类型、双精度类型和无值类型,描述相应类型的关键字是char,int,float,double和void. 构造数据类型是一种或几种基本类型按照按C++的语法要求建立的类型,包括枚举、数组、结构体、共用体和类等。 后续课程要详细介绍。 程序员利用关键字typedef,还可以从基本数据类型和构造数据类型中定义新的数据类型。 字符类型的变量用于保存ASCII字符,整型变量用于保存整数,浮点类型和双精度类型的变量用于保存带小数点的数,但双精度类型比浮点类型有更大的值域。 void类型在后面的章节讨论。 类型修饰符: 除void类型以外,其它类型前面可以加类型修饰符用于改变基本类型的含义,但它们仍然是基本数据类型。 C++的类型修饰符是: signed(有符号的)、unsigned(无符号的)、short(短的)和long(长的)。 修饰符signed和unsigned可以用于字符类型和整型,short和long可以用于整型,long还可以用于双精度类型。 当用short、long、signed或unsigned修饰int时,关键字int可以省略。 字符变量不仅可以用于存储ASCII字符的代码值,也可以用于存储-128—127或者0—255之间的整数值。 表1.1列出了C++的基本数据型和类型修饰符的各种组合。 表1.1C++的基本数据型和类型修饰符的各种组合 类型名 位数 范围 char 8 -128---127 [signed]char 8 -128---127 unsignedchar 8 0---255 int 32 -2,147,483,648---2,147,483,647 Short[int] 16 -32768---32767 signedshortint 16 -32768---32767 unsignedshort[int] 16 0---65535 [signed]int 32 -2,147,483,648---2,147,483,647 unsigned[int] 32 0---4,294,967,295 longint 32 -2,147,483,648---2,147,483,647 signedlongint 32 -2,147,483,648---2,147,483,647 Unsignedlongint 32 0---4,294,967,295 float 32 3.4E-38---3.4E+38 double 64 1.7E-308---1.7E+308 longdouble 64 1.7E-308---1.7E+308 void 0 无值 用户可以通过声明数组、指针、结构或联合,以便从基本类型派生出复合类型的数据。 #include #include voidmain() { unsignedinta; a=pow(2,32)-1; cout< signedintb; b=(pow(2,32)-1)/2; cout< b=85; cout< } 4294967295ffffffff 21474836477fffffff 8555 2.2常量 2.2.1什么是常量 数值型常量、字符型常量。 2.2.2数值常量: 整常量 1.整型常量的类型 从字面上和在表达式中所参加的运算中区分: 55,32769 整常量可以用十进制、八进制和十六进制来表示。 十进制整常量: 由0—9的数字组成,但第一位不能以0开始,也没有小数部分。 输出时用”dec” 八进制整常量: 以0开始,由0—7的数字组成。 输出时用“oct” 十六进制整常量: 以0X(x不分大小写)开始,由0—9的数字及A—F的字母(大小写均可)组成。 输出时用“hex” 负号: 在它们的前面都可用负号表示负数,例如: 0545-05450X5AF-0xabc 2.浮点常量 浮点常量: 就是实数。 在C++中,浮点数可以用浮点表示,也允许科学表示法。 例如: -52.50.515E+265.5E-135.8E5-6.8E2 浮点常量的数据类型: 没有标记为double类型,但可以在其后加后缀F(f)使其为float类型,或加后缀L(l)变为longdouble类型。 例如: -53.8F53.8f35.6E5F0.5L35.6E+51 浮点数在内存中存储形式是指数形式. 2.2.3字符常量 1.普通的字符常量 括在单引号中的一个字符称作字符常量,例如: ’A’,’$’,‘‘(空格)。 字符常量的类型是char类型。 2.转义字符常量 在ASCII字符集中,有些代码表示控制命令,是不可显示的,有些是无法从键盘上直接输入的,由C++提供的一种称作转义序列的方法来表示字符或控制代码。 下面是C++预定义的转义序列,它们都表示一个字符。 \a响铃ASCII7 \n新行ASCII10 \t水平制表符(tab键)ASCII9 \v垂直制表符ASCII11 \b回退符(backspace键)ASCII8 \r回车符ASCII13 \f换页ASCII12 \\反斜杠ASCII92 \’单引号ASCII39 \”双引号ASCII34 可以用十六制或八进制值来表示ASCII码字符集中的任何一个字符或控制代码,这种转义序列以反斜杠开始: \nnn八进制值形式 \xnnn十六进制值形式 其中nnn表示三位十六进制或八进制数。 八进制转义序列在反斜杠后面紧跟八进制数组成的序列即可,而十六进制转义序列需要在反斜杠后面要接一个小写字母x,以表示后面是由十六进制数组成的序列,例如,字符a的十六进制编码是61,用转义序列表示字符a可以写成’\x61。 cout<<"\x61"< cout<<"\x7"< #include voidmain() { chara; a='a'; cout< } 9761 3.字符数据在内存中存储形式及使用方法 例2.1将字符赋给整型变量 #include usingnamespacestd; intmain() { inti,j;i='A';j='B'; cout< return0; } 6566 例2.2字符数据与整数进行算数运算 #include usingnamespacestd; intmain() { charc1,c2;c1='a';c2='b'; c1=c1-32;c2=c2-32; cout< return0; } AB 4.字符串 字符串常量(简称字符串)是用一对双撇号括号起来的字符序列,例如: “Thisisastring\n” “abc” 编译系统会在字符串最后自动加一个’\0’作为字符串结束标志。 由于空格也是一个字符,所以字符串可以包含空格,字符串中也可以包含转义序列。 字符串是一种特殊的常量,它的类型不是基本数据类型,稍后再解释字符串的类型。 当两个字符串仅用空白相隔时,它表示一个串,例如: “Thisis”“astring” #include voidmain() { cout<<"Thisis""astring"< cout<<"\nNewline! "; } Thisisastring Newline! 2.2.4符号常量 #include usingnamespacestd; #definePRICE30 intmain() { intnum=10,total; total=num*PRICE; cout<<"total="< return0; } total=300 2.3变量 2.3.1什么是变量 变量: 2.3.2变量名规则 标识符是程序员定义的名字,用作变量名、函数名和类型名等。 标识符的组成元素和组成规则: 由大小写字母、下划线和0-9的数字组成,组成标识符的规则是以字母或下划线开头,其后可跟数字、下划线、零个或多个字母。 例如: 12c是不合法的标识符,而D$7_I和工资呢? 标识符的长度: 长度可以是任意的,不同的C++编译器能识别的最大长度是有限的,编译器忽略掉多余的字符,而不认为是个错误。 不允许同名: 但如两个标识符的有效字符相同,则出现重定义错误。 区分大小写: 在C++中,大小写字母是有区别的。 例如: Dd是两个不同的标识符 2.3.3定义变量 变量类型变量名表列 2.3.4为变量赋初值 2.3.5常变量 constinta=3; 2.4C++的运算符 运算: 运算是对数据进行加工的过程。 运算符: 记述各种不同运算的符号称为运算符。 操作数: 参与运算的数据称为操作数。 表1.2给出C++的全部运算符及优先级。 表1.2C++的全部运算符及优先级。 优先级 运算符 结合方向 1 ()[]->· : : *&(引用) 从左至右 2 ! ~++---(负号)sizeof *(递引用)&(取地址)newdelete 从右至左 3 */% 从左至右 4 +-(减法) 从左至右 5 >><< 从左至右 6 <<=>>= 从左至右 7 ==! = 从左至右 8 & 从左至右 9 ^ 从左至右 10 | 从左至右 11 && 从左至右 12 || 从左至右 13 ? : 从右至左 14 =+=-=*=/=%=>>=<<=&=^=|= 从右至左 15 从左至右 运算符的分类: 按运算符和操作数的关系,运算符分为一元、二元和三元运算符,分别对一个、二个和三个操作数进行运算。 按运算符和操作数的运算性质,又可分为算术运算符、逻辑运算符、关系运算符、位运算符和其它运算符。 2.5算术运算符与算术表达式 2.5.1基本的算术运算符 C++提供的一元算术运算符是一元减,其作用是取操作数的负值,例如;-a,其运算结果是取a的负值。 C++提供的二元算术运算符如下: +-*/% 加减乘除取模 这些运算符的作用和通常代数中的概念是一致的,但有如下说明: (1)%是取模运算符,a%b的结果是a被b除的余数。 例如,7%5结果是2。 %运算符只能用于整型操作数,其它运算符可以用于整型或浮点类型的操作数。 (2)当运算符/用于整型操作数时,结果类型是整型,其值为商,例如7/5的结果是1,5/7的结果是0,小数部分被舍弃了。 -5/3呢? 2.5.2算术表达式和运算符的优先级和结合性 算术表达式: 例如: 2555+95x+ya*(b+c)a*b+cx+25 都是表达式的例子,其中表达式25和55+95的操作数都是常量,称为常量表达式。 表达式的计算顺序: 在对一个表达式求值时,先计算括号内的表达式,再计算括号外的表达式,优先级高的运算符先运算,优先级低的运算符后运算。 当一个表达式中出现各种运算符时,运算符的优先级和结合性决定一个表达式的求值顺序。 二元算术运算符自左至右进行运算。 又称”左结合性”, #include voidmain() { inta=5,b=7; cout< cout< cout< } 2 1 0 溢出: 与算术运算有关的一个问题是表达式计算中的溢出外理问题。 在C++中,被零除和浮点溢出被个为一个错误导致终止程序的运行。 但整数溢出却不认为是一个错误,原因在于有时需要得用整数溢出进行一些较低级的程序设计。 可以通过将它们都设为long类型变量来解决这个问题。 #include voidmain() { intc=0; cout<<8.8/c< shortd=32767; d=d+10; cout< } 1.#INF -32759 2.5.3表达式中各类数值型数据间的混合运算 10+’a’+1.5-8765.1234*’b’ inti;floatf;doubled;longe; 10+’a’+i*f-d/e 2.5.4自增和自减运算符 C++的增1和减1运算符(++和――)也含有赋值操作,这两个运算将所施予的操作数(必须是一个左值)加1或减1。 例如: i++++ii----i 例如: i=1;j=i++; 使j的值为1,i的值为2,而语句i=1;j=++i; 使i和j的值都为2。 对于减1运算符也是一样的。 前缀是先赋值后参加计算,后缀是先参加计算后赋值。 注意: 增1和减1运算符只能用于左值(例如变量),下面这个表达式是非法的: ++(i+j); 2.5.5强制类型转换运算符 (类型名)(表达式) 类型名(表达式) 2.6赋值运算符与赋值表达式 2.6.1赋值运算符 2.6.2赋值过程中的类型转换 赋值类型转换: 例如: doublex;inty;x=y;y+=0.5; 对于第一个语句,y的值首先转换为double类型的值,然后置给x,表达式x=y的类型为double类型。 对于第二个表达式,y的值首先转换成double类型的值。 然后与0.5相加,该运算结果为double类型的值,这个值被转换为int类型的值以后置给y。 例2.5将有符号数据传给无符号数据 #include usingnamespacestd; intmain() { unsignedshorta; shortintb=-1; a=b; cout<<"a="< return0; } a=65535 2.6.3复合的赋值运算符 C++还提供了下述几个赋值运算符: +=-=*=/=%= <<=>>=&=^=|= 这些运算符都是二元运算符,并且是“自右至左”,它们的优先级和简单赋值的优先级一样。 假设op表示这些运算符中符号“=”左边的运算符,则表达式 左值op=表达式可以理解为左值=左值op(表达式) 2.6.4赋值表达式 赋值运算: 赋值运算用于改变一个存储区域的内容。 C++提供一个简单的赋值运算符=,它将右操作数的值置给左操作数,左操作数必须是一个左值。 在C++中,赋值是一个表达式,表达式的值是左操作数赋值后的值。 因此,在C++中允许下面赋值: i=j=25; #include voidmain() { inta,b; cout<<(a=18)< cout< b=a=23;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 初步 知识 数据类型 表达式
![提示](https://static.bdocx.com/images/bang_tan.gif)