基本的算术运算符2 w/ Q; c& `/ k6 O; L' X8 J4 `" U
! M7 b0 M+ D0 Q" o
在C语言中,基本的算术运算符是:+、-、*、/、%,分别为加、减、乘、除、求余运算符。这些运算符需要两个运算对象,称为双目运算符。除求余运算符%外,运算对象可以是整型,也可以是实型。如1+2、1.2*3.2。
2 l7 j" e2 L. V7 D, m 求余运算符的运算对象只能是整型。在%运算符左侧的运算数为被除数,右侧的运算数为除数,运算结果是两数相除后所得的余数。当运算数为负数时,所得结果的符号随机器的不同而不同。" N* _: {; O' I. Q* M6 |
“+”和“-”也可用作单目运算符,运算符必须出现在运算数的左边。运算数可为整型,也可为实型。如:-54、+3.9。
. L r# H b- t% h8 [ 说明:. F' E2 h8 t4 U. P3 x7 j# D% S3 o
(1)如果双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致。例如:1.0/2.0,其运算结果为0.5;1/2,其运算结果为O。
' s3 P2 y( `- b) M+ U) [ (2)如果双目运算符两边运算数的类型不一致,系统将自动进行类型转换,使运算符两边的类型达到一致后,再进行运算。
$ ?& o/ Y- B( o2 c+ h/ t6 ?/ v' a+ Z (3)在C语言中,所有实型数的运算均以双精度方式进行。若是单精度数,则在尾数部分添0,使之转化为双精度数。2 U% h, L' t2 V" t z4 H
$ b4 X5 P1 b) z: ~
运算符的优先级、结合性和算术表达式/ p+ V; W; G9 R( t$ O1 u
* \% I0 ~; H2 j' M+ a9 o 在C语言中,常量、变量、函数调用以及按C语言语法规则用运算符把运算数连起来的式子都是合法的表达式。凡是表达式都有一个值,即运算结果。
1 k5 U( a; M# _' Y ! g! ~7 j. ~) m" X/ @: m
一、算术运算符的优先级
, j* l8 U4 T) h0 C" \) l
1 w0 q! r& E3 X/ f8 L1 \' B 算术运算符和圆括号的优先级高低次序如下: : s9 }, B) J5 _1 M1 W& {9 M P4 p
二、算术运算符和圆括号的结合性
, D) |- B" G6 N# b
% s4 d$ `5 m; ]! H 以上所列的运算符中,只有单目运算符“+”和“-”的结合性是从右到左的,其余运算符的结合性都是从左到右。6 Z5 U2 A1 ~, L% D9 n$ L t
例如:表达(5+1)/2的运算结果是3,圆括号的优先级高于除号;表达式5+1/2的运算结果是5,除号的优先级高于加号;表达式5*-2的褥算结果是-1O,单目运算符“-”的优先级高于乘号,这个表达式与5*(-2)等价。! M, G* U8 y$ J( J3 l2 g
. g7 r- C2 I9 u 三、算术表达式, {2 y0 z6 `5 f" }# L! E
. H# m' E% M( Y0 H% N
用算术运算符和一对圆括号将运算数(或称操作数)连接起来的、符合C语言语法的表达式称为算术表达式。
% l" B' y, C- R+ L6 ] 算术表达式中,运算对象可以是常量、变量和函教等。例如:2+sqrt(c)*b。( b& g) F' y w. V8 {
在计算机语言中,算术表达式的求值规律与数学中四则运算的规律类似,其运算规则和要求如下:( c7 h& W/ P- I5 ^( x
(1)在算术表达式中,可使用多层圆括号,但左右括号必须配对。运算时从内层圆括号开始,由内向外依次计算表达式的值。; W: c$ j/ ]& U; ^* }7 @* M5 s
(2)在算术表达式中,若包含不同优先级的运算符,则按运算符的优先级由高到低进行;若表达式中运算符的级别相同,则按运算符的结合方向进行。例如表达式a+b-c,因为+号和-号的优先级相同,它们的结合性为从左到右,因此先计算a+b,然后把所得结果减去c的值。
: ~' }; i0 I5 R8 t, \
4 k9 @8 m N- R: f- g) J6 V 强制类型转换表达式
: t: r- p1 b* b0 T. j% T
\! c" |5 _* l* U `8 G* ` 强制类型转换表达式的形式如下:7 ^1 d/ s: u" P9 A# {/ a& b
(类型名)(表达式)
$ U" s3 l! ]2 E% c2 T0 a& ?) T 上述形式中,(类型名)称为强制类型转换运算符,利用强制类型转换运算符可以将一个表达式的值转换成指定的类型,这种转换是根据人为要求进行的。例如:表达式(int)3.234把3.234转换成整数3;表达式(double)(10%3)把10%3所得结果1转换成双精度数。 |