22数据类型和基本输入输出 >输入流(cin) cin可以获得多个键盘的输入值,它具有下列格式 cin>><表达式1>[>><表达式2>... 其中,提取符“>>可以连续写多个,每个后面跟一个表达式,该表达式通常是获得 输入值的变量或对象。 格式算子oct、dec和hex 能分别将输入或输出的数值转换成八进制、十进制及十六进制,例如: [例 Ex Algorism]格式算子的使用。 #include iostream. h> void main o Int nNum cout Please input a Hex integer cin>hex>>nNum cout< oct\t< oct<<nNum<endl out<< Dec\t<<dec<<nNum<<endl cout<< Hex\t<<hex<<n Num<endl 程序执行时,结果如下 Please input a Hex integer: 7b.J Dec 123 Hex
2.2数据类型和基本输入输出 ➢ 输入流(cin) cin可以获得多个键盘的输入值,它具有下列格式: cin>> <表达式1 > [>> <表达式2> ...] 其中,提取符“>>”可以连续写多个,每个后面跟一个表达式,该表达式通常是获得 输入值的变量或对象。 ➢ 格式算子oct、dec和hex 能分别将输入或输出的数值转换成八进制、十进制及十六进制,例如: [例Ex_Algorism] 格式算子的使用。 #include <iostream.h> void main() { int nNum; cout<<"Please input a Hex integer:"; cin>>hex>>nNum; cout<<"Oct\t"<<oct<<nNum<<endl; cout<<"Dec\t"<<dec<<nNum<<endl; cout<<"Hex\t"<<hex<<nNum<<endl; } 程序执行时,结果如下: Please input a Hex integer:7b Oct 173 Dec 123 Hex 7b
2,3运算符和表达式 231算术运算符 算术运算符如下所示 (正号运算符,如+4,+1.23等) (负号运算符,如-4,-1.23等) (乘法运算符,如6*8,1.4*3.56等) */%+ (除法运算符,如6/8,1.4/3.56等) (模运算符或求余运算符,如40%11等) (加法运算符,如6+8,1.4+3.56等) (减法运算符,如6-8,1.4-3.56等) 注意 (1)除法运算 两个整数相除,结果为整数,如7/5的结果为1,它是将小数部分去掉,而不 是四舍五入;若除数和被除数中有一个是浮点数,则进行浮点数除法,结果 是浮点型。如7/5.0、7.0/5、7.0/5.0的结果都是1.4 (2)求余运算 求余运算要求参与运算的两个操作数都是整型,结果是两个数相除的余数。 例如40%5的结果是0,40%11的结果是7。要理解负值的求余运算,例如 40%-11结果是7,-40%11结果是-7,-40%-11结果也是-7
2.3运算符和表达式 2.3.1算术运算符 算术运算符如下所示: + (正号运算符,如+4,+1.23等) - (负号运算符,如-4,-1.23等) * (乘法运算符,如6*8,1.4*3.56等) / (除法运算符,如6/8,1.4/3.56等) % (模运算符或求余运算符,如40%11等) + (加法运算符,如6+8,1.4+3.56等) - (减法运算符,如6-8,1.4-3.56等) 注意: (1) 除法运算 两个整数相除,结果为整数,如7/5的结果为1,它是将小数部分去掉,而不 是四舍五入;若除数和被除数中有一个是浮点数,则进行浮点数除法,结果 是浮点型。如7/5.0、7.0/5、7.0/5.0的结果都是1.4。 (2) 求余运算 求余运算要求参与运算的两个操作数都是整型,结果是两个数相除的余数。 例如40%5的结果是0,40%11的结果是7。要理解负值的求余运算,例如 40%-11结果是7,-40%11结果是-7,-40%-11结果也是-7
2.3运算符和表达式 (3)优先级和结合性 将表达式的求值中多种运算之间的先后关系(即运算符之间的优先关系)用 运算符的优先级表示,优先级的数值越小优先级越高。在算术运算符中,单 目运算符的优先级最高,其次是乘、除和求余,最后是加减 优先级相同的运算符,则按它们的结合性进行处理。运算符的结合性是指 运算符和操作数的结合方式,有“从左至右”和“从右至左”。“从左至右 的结合”指运算符左边的操作数先与运算符相结合,再与运算符右边的操作 数进行运算;自右至左的结合次序是将运算符右边的操作数先与运算符相结 在算术运算符中,除单目运算符外,其余运算符的结合性都是从左至右的。 (4)关于书写格式 在使用运算符进行数值运算时,若书写时没有在双目运算符两边加上空格, 则有时编译系统会做出与自己想象中不同的理解。 书写时,有时有意识地加上一些括号。这样不仅增强程序的可读性,而且, 尤其当对优先关系犹豫时,加上括号是保证正确结果的最好方法。 (5)溢出处理 某数除以0或当其它浮点溢出时,编译系统将报告错误并终止程序运行。但 对整数溢出,系统却不认为是一个错误
2.3运算符和表达式 (3) 优先级和结合性 ▪ 将表达式的求值中多种运算之间的先后关系(即运算符之间的优先关系)用 运算符的优先级表示,优先级的数值越小优先级越高。在算术运算符中,单 目运算符的优先级最高,其次是乘、除和求余,最后是加减。 ▪ 优先级相同的运算符,则按它们的结合性进行处理。运算符的结合性是指 运算符和操作数的结合方式,有“从左至右”和“从右至左”。“从左至右 的结合”指运算符左边的操作数先与运算符相结合,再与运算符右边的操作 数进行运算;自右至左的结合次序是将运算符右边的操作数先与运算符相结 合。 ▪ 在算术运算符中,除单目运算符外,其余运算符的结合性都是从左至右的。 (4) 关于书写格式 ▪ 在使用运算符进行数值运算时,若书写时没有在双目运算符两边加上空格, 则有时编译系统会做出与自己想象中不同的理解。 ▪ 书写时,有时有意识地加上一些括号。这样不仅增强程序的可读性,而且, 尤其当对优先关系犹豫时,加上括号是保证正确结果的最好方法。 (5) 溢出处理 某数除以0或当其它浮点溢出时,编译系统将报告错误并终止程序运行。但 对整数溢出,系统却不认为是一个错误
2,3运算符和表达式 2.3.2赋值运算符 复合赋值 10种复合赋值运算符:+=,-,*=,/=,% =,=,<<=,》>= 注意: (1)在复合赋值运算符之间不能有空格,例如+=不能写成+ (2)所有运算符高于逗号运算符,复合赋值运算符的结合性是从右至左的。 >多重赋值 指在一个赋值表达式中出现两个或更多的赋值符(“=”),例如 nNuml nNum2= nNum3=100 赋值符的结合性是从右至左,上述赋值的过程:首先对ηNum3=100求值, 将100赋值给nNum3,同时该赋值表达式取得值100:然后将该值赋给 nNum2,该赋值表达式也取得值100;最后将100赋给nNum1。 表27C常用运算符一览表 运符 含叟 例子 等效表示 加值 t= b a=a t b 咸赋值 乘呲值 除蹴值 /=b a=a b 赋值 nlum num s 8
2.3运算符和表达式 2.3.2赋值运算符 ➢ 复合赋值 10种复合赋值运算符:+=,-=,*=,/=,%=,—=,|=, ^= ,<<=,>>= 注意: (1) 在复合赋值运算符之间不能有空格,例如 += 不能写成 + = 。 (2) 所有运算符高于逗号运算符,复合赋值运算符的结合性是从右至左的。 ➢ 多重赋值 指在一个赋值表达式中出现两个或更多的赋值符(“=”),例如: nNum1 = nNum2 = nNum3 = 100; 赋值符的结合性是从右至左,上述赋值的过程:首先对nNum3 = 100求值, 将100赋值给nNum3,同时该赋值表达式取得值100;然后将该值赋给 nNum2,该赋值表达式也取得值100;最后将100赋给nNum1
2,3运算符和表达式 233数据类型转换 自动转换 将数据类型从低到高进行转换,例如:10+a+2*1.25-5.0/4L运算 (1)2*1.25的运算,将2和1.25都转换成 double型,结果为 double型的2.5 (2)长整型4L和5.0转换成 double型,5.0/4L结果为 double型,值为1.25。 (3)进行10+a’的运算,先将‘a'转换成整数97,运算结果为107。 (4)整数107和2.5相加,先将整数107转换成 double型,值为109.5 (5)进行109.5-1.25的运算,结果为 double型的108.25。 强制转换 强制类型有下列两种格式:(<类型名>)<表达式〉、<类型名>(<表达式>)。 整型 无符号整型 长整型 无符号长整型 双精度浮点型 (unsigned) (unsigned long) 短整型,字符型 单精度浮点型 (short, char) float) 图2.1类型转换的顺序
2.3运算符和表达式 2.3.3数据类型转换 ➢ 自动转换 将数据类型从低到高进行转换,例如:10 + ‘a’ + 2*1.25 - 5.0/4L运算: (1) 2*1.25的运算,将2和1.25都转换成double型,结果为double型的2.5。 (2) 长整型4L和5.0转换成double型,5.0/4L结果为double型,值为1.25。 (3) 进行10 + ‘a’ 的运算,先将‘ a’转换成整数97,运算结果为107。 (4) 整数107和2.5相加,先将整数107转换成double型,值为109.5。 (5)进行109.5 - 1.25的运算,结果为double型的108.25。 ➢ 强制转换 强制类型有下列两种格式:(<类型名>)<表达式>、<类型名>(<表达式>) 。 整型 (int) 无符号整型 (unsigned) 长整型 (long) 无符号长整型 (unsigned long) 双精度浮点型 (double) 短整型,字符型 (short, char) 单精度浮点型 (float) 图2.1 类型转换的顺序