C++程序设计主讲:王金湘wangjx@seu.edu.cn条件运算符条件运算符条件运算符是C++中惟一的一个三目运算符,条件运算符是C中惟的个三目运算符,由两个符号“?”和“:”组成。条件运算符的格式如下:符的格式如下:条件表达式?表达式1:表达式2其含义是如果条件表达式的结果为真(非0)就例其含义是如果条件表达式的结果为真(非0),就执行表达式1;否则就执行表达式2。表达式和的类型必须相容例:ab?(max=a):(max=b)意思是如果a大于b,则max=a,否则max=b。即1和2的类型必须相容。,,把a和b两者中的大值赋给max。上例也可写成:max=ab?a:b上例也可写成:maxab?a:b计算机基础知识王金湘wangjx@seu.edu.cn2逗号表达式逗号表达式C++中,逗号既是分隔符,又是运算符,用逗号连接起来的表达式称为逗号表达式接起来的表达式称为逗号表达式。一般格式为:般格式为:表达式1,表达式2,…,表达式n逗号表达式中的每一个表达式都会被运算,整个逗号表达式的值为最后一个表达式的值。号表达式的值为最后个表达式的值。例如:a=(x=3,x+=6,5+6);//a=11x=9注意:逗号的运算符比赋值号优先级低计算机基础知识王金湘wangjx@seu.edu.cn3逗号的运算符比赋值号优先级低sizeof运算符sizeof运算符带参数的单算符个sizeof是带参数的单目运算符,而不是一个函数。它的格式如下:数格式sizeof(表达式)或if(数据类型)或sizeof(数据类型)它的运算结果是表达式的存储字节数或系统它的运算结果是表达式的存储字节数或系统为该数据类型所设置的存储字节数。例如if(it)其结果为4即求出了系统例如:sizeof(int)其结果为4,即求出了系统为int类型所设置的字节数为4。计算机基础知识王金湘wangjx@seu.edu.cn4自动类型转换自动类型转换在表达式中常会遇到不同类型数据之间进行运算,此时不同类型的数据要先转换成同一类型然后再进行时不同类型的数据要先转换成同一类型,然后再进行运算。在表达式中char和short类型的值都会自动转换成int;在表达式中,char和short类型的值都会自动转换成int;无符号的char和short类型的值会自动转换成unsignedint。float型数据在运算时一律先转换成双精度型,以提高运算精float型数据在运算时律先转换成双精度型,以提高运算精度。按照从高到低的顺序给各种数据类型分等级,依次为:按照从高到低的顺序给各种数据类型分等级依次为longdouble,double,unsignedlonglong,longlong,unsignedlong,long。当两操作数类型不同时,将精度低的操作数的数据类型变换到与另操作数类型相同低的操作数的数据类型变换到与另一操作数类型相同再进行运算。计算机基础知识王金湘wangjx@seu.edu.cn5强制类型转换强制类型转换强制类型转换格式为强制类型转换格式为:强制转换类型(表达式)或(强制转换类型)(表达式)强制转换并不是将表达式或变量直接转换成指定的强制转换并不是将表达式或变量直接转换成指定的类型,而是产生一个临时变量,再将表达式强制转换成指定的数据类型并赋给临时变量而原来转换成指定的数据类型并赋给临时变量,而原来的表达式或变量的数据类型和值不发生变化。例如执行语句dblf36iti(it)f后i的例如:执行语句doublef=3.6;inti=(int)f;后,i的值为3,而f的值依然为3.6。计算机基础知识王金湘wangjx@seu.edu.cn6数据强制转换规则(1)数据强制转换规则(1)将浮点型数据包括单双精度强制转换成将浮点型数据(包括单、双精度)强制转换成整型变量时,舍弃其小数部分,整数部分在内存中以整数形式存储在内存中以整数形式存储。将整型数据强制转换成浮点型变量时数将整型数据强制转换成浮点型变量时,数值不变,但以浮点数形式存储。字符型数据强制转换成整型变量,将字符的ASCII码赋给整型变量的ASCII码赋给整型变量。计算机基础知识王金湘wangjx@seu.edu.cn7数据强制转换规则(2)数据强制转换规则(2)将一个int、short或long型数据强制转换成将个int、short或long型数据强制转换成一个char型变量,只将其低8位原封不动地送到char型变量送到char型变量。将signed(有符号)型数据强制转换成长度相将g(有符号)数据强制转换成长度相同的unsigned(无符号)型变量,或将unsigned(无符号)型数据强制转换成长度相unsigned(无符号)型数据强制转换成长度相同的signed(有符号)型变量时,即有符号和无符号型互换存储单元内容原样照搬(连原无符号型互换存储单元内容原样照搬(连原有的符号位也作为数值一起传送)。计算机基础知识王金湘wangjx@seu.edu.cn8赋值类型转换赋值类型转换如果赋值运算符两侧的数据类型不致但都是如果赋值运算符两侧的数据类型不一致,但都是数值型或字符型时,在赋值时会进行强制类型转换换。#includeiostream.hidi()该程序将实数四舍五入转换成整数voidmain(){doublef;转换成整数doublef;cout请输入一实数;cinf;;inti=f+0.5;cout转换后整数为i;}计算机基础知识王金湘wangjx@seu.edu.cn9}C++语句C语句1.声明语句:在C++中,实现对数据结构的定义和描述、对变量的定义性说明的语句被称义和描述对变量的定义性说明的语句被称为说明语句。2表达式语句:在合法的表达式后面加上分号,2.表达式语句:在合法的表达式后面加上分号,即形成了表达式语句。3控制语句控制改变程序运行顺序的语句被3.控制语句:控制改变程序运行顺序的语句被称为控制语句。包括:选择语句、循环语句、流程跳转语句等流程跳转语句等计算机基础知识王金湘wangjx@seu.edu.cn10C++语句C语句4.函数调用语句:在函数的调用后面加上分号,即形成函数调用语句。号,即形成函数调用语句。5.空语句:只有一个分号组成的语句称为空语句它不做任何操作语句,它不做任何操作。6.复合语句:当用{}将若干条语句括起来,C将其作为条语句进行处理被称为复C++将其作为一条语句进行处理,被称为复合语句。计算机基础知识王金湘wangjx@seu.edu.cn11简单的输入输出简单的输入输出C++中的简单输入、输出,它是通过输入、输出流类的对象i和t完成的输出流类的对象cin和cout完成的。cin和cout包含在iostream.h文件中;计算机基础知识王金湘wangjx@seu.edu.cn12C++的输入输出C++的输入输出cin用来在程序执行期间给变量输入数据,格式为:cin变量名1[变量名2变量名n];cin变量名1[变量名2…变量名n];cout实现将数据输出到显示器的操作,格式为:cout表达式1[表达式2…表达式n];同时必须在程序开头增加一行:同时必须在程序开头增加行:#includeiostream.h计算机基础知识王金湘wangjx@seu.edu.cn13字符的输入输出字符的输入输出cin与cin.get()的区别cin与cin.get()的区别(1)cin例如:charc1,c2,c3;例如:charc1,c2,c3;cinc1;//Acinc2c3;cinc2c3;程序执行到A行时,等待用户输入数据。若输入:AbcCR若输入:AbcCR则cin分别将字符A、b、c赋给变量c1、c2、c3。cin自动跳过输入的空白字符(包括空格,制表,cin自动跳过输入的空白字符(包括空格,制表,backspace和回车等)。计算机基础知识王金湘wangjx@seu.edu.cn14字符的输入输出字符的输入输出(2)cinget()(2)cin.get()例如:charc1,c2,c3,c4;cinget(c1);//Bcin.get(c1);//Bcin.get(c2);cinget(c3);cin.get(c3);程序执行到B行时,若输入:AbCR则执行结果是:字符′A′、空格、字符′b′分别赋则执行结果是:字符A、空格、字符b分别赋给变量c1、c2、c3;输入行中仍保留回车符。cinget()把从键盘上输入的所有字符包括空白cin.get()把从键盘上输入的所有字符,包括空白字符,都作为输入字符赋给字符变量计算机基础知识王金湘wangjx@seu.edu.cn15字符的输入输出字符的输入输出关于字符的输出,请看下例,假定字符c1、c2、c3的值分别为字符′′′b′和′′执行以下语句序列的值分别为字符′a′、′b′和′c′,执行以下语句序列:coutc1′\t′c2′\n′;3dlcoutc3endl;cout′O′′k′endl;屏幕上将输出屏幕上将输出:abcOk输出时字符之间是无间隔的如果想让字符间有输出时字符之间是无间隔的,如果想让字符间有间隔,必须输出间隔符.计算机基础知识王金湘wangjx@seu.edu.cn162字符串常量的输出2.字符串常量的输出请看下例:charc1,c2,c3;cout”Inputc1,c2,c3:”endl;cinc1c2c3;//Ccout”c1is”c1′\t′”c2is”c2′\t′”c3is”c3endl;程序执行后首先输出程序执行后首先输出:Inputc1,c2,c3:然后暂停在C行等待数据输入,若此时输入:abcCRabcCR程序继续执行并输出结果:c1isac2isbc3isc计算机基础知识王金湘wangjx@seu.edu.cn17可以看出,双引号中的的字符串常量照原样输出。3.十进制数据的输入输出3.十进制数据的输入输出请看下例:inti,j;floatx,y;inti,j;floatx,y;cout”Inputi,j,x,y:”endl;cinij;//Dcinxy;cout”i=”i′\t′”j=”jendl;t”+”+dlcout”x+y=”x+yendl;若输入:10204.58.6CR则程序输出:则程序输出:i=10j=20x+y=13.1输出时各数据间是无间隔的,因此应当有意输出一些间隔符计算机基础知识王金湘wangjx@seu.edu.cn184.输入输出的格式控制()各种进制数据的输入输出如果要求按八进制或十六进制输入输出,在cin或cout中(1)各种进制数据的输入输出必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制。例如:intijkl;inti,j,k,l;cout”Inputi(oct),j(hex),k(hex),l(dec):”endl;cinocti;//输入为八进制数cinocti;//输入为八进制数cinhexj;//输入为十六进制数cink;//输入仍为十六进制数输cindecl;//输入为十进制数cout”hex:””i=”hexiendl;cout”dec:””j=”decj′\t′;cout”dec:””j=”decj′\t′;cout”k=”kendl;cout”oct:””l=”octl;计算机基础知识王金湘wangjx@seu.edu.cn19couoc:oc;coutdecendl;//恢复十进制输出状态在输入十六进制时,数可以用0x开始,也可以不用加0x;同样,输入八进制时,数可以以不用加0x;