购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3
数据操作

【任务3】 从键盘输入2个整数,输出它们之和。

【算法分析】

①定义3个变量,2个数之和;

②从键盘输入2个整数,分别存入2个变量中;

③计算它们的和,赋值给和的变量;

④输出结果。

【代码】

【知识点】

(1)运算符与表达式

1)运算量

参加运算的对象称为运算量,运算量包括常量、变量和函数等。

2)运算符

表示运算的符号称为运算符或操作符。有1个运算量的运算符称为单目运算符;有2个运算量的运算符称为双目运算符;有3个运算量的运算符称为三目运算符。

C语言提供了丰富的运算符,共有13类:

①算术运算符:+、-、*、/、%、++、--。

②关系运算符:<、<=、==、>、>=、!=。

③逻辑运算符:!、&&、||。

④位运算符:<<、>>、~、|、^、&。

⑤赋值运算符:=及其扩展。

⑥条件运算符:?:。

⑦逗号运算符:,。

⑧指针运算符:*、&。

⑨求字节数:sizeof。

⑩强制类型转换:(类型)。

⑪分量运算符:.、->。

⑫下标运算符:[]。

⑬其他运算符:()、-。

3)运算符的优先级与结合性

①运算符的优先级:当在一个表达式中出现多个运算符时,要按照运算符的优先级别进行运算,优先级别高的先于优先级别低的运算。

②运算符的结合性:在一个运算量两侧的运算级别相同时,则按照运算符的结合性规定的结合方向处理。结合方向包括:左结合性(自左至右)和右结合性(自右至左)。

一般来说,单目运算符优先级较高,赋值运算符较低。算术运算符较高,关系和逻辑运算符较低。大多数运算符具有左结合性,单目运算符、赋值运算符和三目运算符具有右结合性。

4)表达式

用运算符把运算量连接起来的式子称为表达式。单个常量、变量或函数也可以看成是特殊的表达式。

(2)算术运算符

5种基本的算术运算符分别是+(加法)、-(减法)、*(乘法)、/(除法)、%(求余数)

这里,需要特别提出的是:

1)关于除法运算符“/”

在进行除法运算时,当除数和被除数都为整数时,得到的结果也是一个整数。如果除法运算有小数参与,得到的结果会是一个小数。例如:5/2=2,而5.0/2=2.5。

2)关于求余数运算符“%”

要求两侧的操作数均为整型数据,结果的符号与被除数的符号相同。例如:5%3=2,3%5=3,-5%3=-2,-5%(-3)=-2。但是,5.2%3是语法错。

*、/、%的优先级别高于+、-的优先级,都具有左结合性。

(3)赋值类运算符

1)赋值运算符

赋值符号“=”就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。

赋值运算符的一般格式为:

变量=表达式

例如:

但是7=x是错误的,因为赋值符号“=”的左边一定是单个的变量,不能是常量或表达式。

C语言中可以通过一条赋值语句对多个变量进行赋值,例如:

在上述代码中,一条赋值语句可以同时为变量x、y、z赋值,这是由于赋值运算符的结合性为“从右向左”,即先将6赋给变量z,然后再把变量z的值赋给变量y,最后把变量y的值赋给变量x,表达式赋值完成。需要注意的是,下面的这种写法在C语言中是不可取的。

赋值运算符的优先级别仅高于逗号运算符,具有右结合性。

2)复合赋值运算符

在赋值符之前加上其他的运算符可构成复合赋值符,如+=、-=、*=、/=、%=。

复合赋值运算的一般格式为:

变量 复合运算符 表达式

例如:

复合赋值运算的优先级别和结合性与赋值运算符的相同。

3)自增和自减运算符

自增运算符为“++”,其功能是使变量自加1。自减运算符为“--”,其功能是使变量自减1。

它们有两种用法:

前缀运算:++变量,--变量

先使变量的值增(减)1,然后再以改变后的值参与其他运算,即先增减,后运算。

后缀运算:变量++,变量--

变量先参与其他运算,然后再使变量的值增(减)1,即先运算,后增减。

【例1.2】 自增自减运算。

程序运行结果如图1-9所示。

图1-9 例1.2程序运行结果

(4)位运算符

位运算符是针对二进制数的每一位进行运算的符号,专门针对数字0和1进行操作。C语言中的位运算符的范例及结果见表1-5。

表1-5位运算符

位运算符仅能对数值型的数据进行运算。在对数字进行位运算之前,程序会将所有的操作数转换成二进制数,然后再逐位运算。

下面针对每个运算符的含义进行讲解。

1)与运算符

位运算符“&”是将参与运算的两个二进制数进行“与”运算,如果两个二进制位都为1,则该位的运算结果为1,否则为0。例如将6和13进行与运算,6对应的二进制数为00000110,13对应的二进制数为00001101,具体演算过程如下所示:

运算结果为00000100,对应数值4。

2)或运算符

位运算符“|”是将参与运算的两个二进制数进行“或”运算,如果二进制位上有一个值为1,则该位的运算结果为1,否则为0。例如将6和13进行或运算,具体演算过程如下所示:

运算结果为00001111,对应数值15。

3)取反运算符

位运算符“~”只针对一个操作数进行操作,如果二进制位是0,则取反值为1;如果二进制位是1,则取反值为0。例如,将6进行取反运算,具体演算过程如下所示:

运算结果为11111001,最高位是1表示负数,则末位减1取反,对应的数值为-15。

4)异或运算符

位运算符“^”是将参与运算的两个二进制数进行“异或”运算,如果二进制位相同,则值为0,否则为1。例如将6和13进行异或运算,具体演算过程如下所示:

运算结果为00001011,对应数值11。

5)左移运算符

位运算符“<<”是将操作数所有二进制位向左移动一位。运算时,右边的空位补0。左边移走的部分舍去。例如,一个byte类型的数字13用二进制表示为00001101,将它左移一位,具体演算过程如下所示:

运算结果为00011010,对应数值26。

6)右移运算符

位运算符“>>”是将操作数所有二进制位向右移动一位。运算时,左边的空位根据原数的符号位补0或者1(原来是负数就补1,是正数就补0)。右边移走的部分舍去。例如,一个byte类型的数字13用二进制表示为00001101,将它左移一位,具体演算过程如下所示:

运算结果为00000110,对应数值6。

(5)逗号运算符

C语言提供一种用逗号运算符“,”连接起来的式子,称为逗号表达式。逗号运算符又称顺序求值运算符。

逗号表达式一般格式:

表达式1,表达式2……,表达式 n .

逗号表达式求解过程:自左至右,依次计算各表达式的值,“表达式 n ”的值即为整个逗号表达式的值。

逗号表达式优先级别最低,具有左结合性。

例如:逗号表达式“a=2*5,a*4”的值等于40:先求解a=2*5,得a=10;再求a*4=40,所以逗号表达式的值为40。

又例如:逗号表达式“b=2+1,b*5,b+9”的值等于12,先求解b=2+1,得b=3,再求b*5=15;最后求解b+9=12,所以逗号表达式的值为12。

(6)强制类型转换

C语言中,可以把一种类型的数据通过强制类型转换为另一种类型的数据。

强制类型转换一般格式为:

(类型声明符)(表达式)

功能:把表达式的运算结果强制转换成类型声明符所表示的类型。

例如:

在使用强制转换时应注意以下问题:

①类型声明符和表达式都必须加括号(变量可不加)。如把(float)(a+b)写成(float) a+b则成了把a转换成float型之后再和b相加。

②将实数转换为整数时,直接截断,不是四舍五入。如(int)4.7结果为4。

③强制转换和自动转换只是为了本次运算的需要,对变量的数据长度进行的临时性转换,而不改变原来对该变量定义的类型。如:(int)x只是将x的值转换成一个int型的中间量,数据类型并没转换成int型。

(7)长度运算

长度运算可以求出指定数据类型或数据在内存中的存储长度。

长度运算的一般格式为:

sizeof(类型标识符或表达式)

例如:int a;sizeof(a)的结果为4。 K5QG6a/E+ZSiUsyey7S4vhzawq/jl1k02v4Lqzlap7+M++DVQl9KjY1HwNAjlrkX

点击中间区域
呼出菜单
上一章
目录
下一章
×