算术运算符和算术表达式基本的算术运算符
1.加法运算符“+”加法运算符为双目运算符,即应有两个量参与加法运算。如a+b,4+8等。具有右结合性。
2.减法运算符“-”减法运算符为双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-5等具有左结合
性。
3.乘法运算符“*”双目运算,具有左结合性。
4.除法运算符“/”双目运算具有左结合性。参与运算量均为整型时, 结果也为整型,舍去小数。如果运算量中有一
个是实型,则结果为双精度实型。
void main(){
printf("\n\n%d,%d\n",20/7,-20/7);
printf("%f,%f\n",20.0/7,-20.0/7);
}
双目运算具有左结合性。参与运算量均为整型时, 结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为
双精度实型。 printf("\n\n%d,%d\n",20/7,-20/7);
printf("%f,%f\n",20.0/7,-20.0/7);
本例中,20/7,-20/7的结果均为整型,小数全部舍去。而20.0/7和-20.0/7由于有实数参与运算,因此结果也为实
型。
5.求余运算符(模运算符)“%”双目运算,具有左结合性。要求参与运算的量均为整型。 求余运算的结果等于两数相
除后的余数。
void main(){
printf("%d\n",100%3);
}
双目运算,具有左结合性。求余运算符% 要求参与运算的量均为整型。本例输出100除以3所得的余数1。
自增1,自减1运算符
自增 1运算符记为“++”,其功能是使变量的值自增 1。自减 1运算符记为“--”,其功能是使变量值自减 1。自增 1,
自减 1运算符均为单目运算,都具有右结合性。可有以下几种形式: ++i i自增 1后再参与其它运算。--i i自减 1
后再参与其它运算。
i++ i参与运算后,i的值再自增1。
i--i参与运算后,i的值再自减1。
在理解和使用上容易出错的是i++和i--。 特别是当它们出在较复杂的表达式或语句中时,常常难于弄清,因此应仔
细分析。
void main(){
int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
} i<--8
i<--i+1
i<--i-1
i<--i+1
i<--i-1
i<--i+1
i<--i-1 int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
i的初值为 8
第2行i加 1后输出故为 9;
第 3行减 1后输出故为 8;
第4行输出i为8之后再加 1(为 9);
第5行输出i为9之后再减1(为8);
第6行输出-8之后再加1(为9);
第7行输出-9之后再减1(为 8)
void main(){
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}
i<--5,j<--5,p<--0,q<--0
i+i+i--->p,i+1-->i,i+1-->i,i+1-->i
j+1->j,j+1->j,j+1->j,j+j+j->q int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
这个程序中,对 P=(i++)+(i++)+(i++)应理解为三个 i相加,故 P值为15。然后 i再自增1三次相当于加3故 i的昀
后值为8。而对于q 的值则不然,q=(++j)+(++j)+(++j)应理解为q先自增1,再参与运算,由于q自增1三次后值为
8,三个 8相加的和为24,j的最后值仍为8。算术表达式表达式是由常量、变量、函数和运算符组合起来的式子。 一
个表达式有一个值及其类型,它们等于计算表达式所得结果的值和类型。表达式求值按运算符的优先级和结合性规定
的顺序进行。 单个的常量、变量、函数可以看作是表达式的特例。