当前位置:天才代写 > tutorial > C语言/C++ 教程 > C语言进修教程第二章-数据范例、运算符、表达式(六)

C语言进修教程第二章-数据范例、运算符、表达式(六)

2017-11-04 08:00 星期六 所属: C语言/C++ 教程 浏览:646

强制范例转换
强制范例转换是通过范例转换运算来实现的。其一般形式为: (范例说明符) (表达式) 其成果是把表达式的运算功效强制转换成范例说明符所暗示的范例。譬喻: (float) a 把a转换为实型(int)(x+y) 把x+y的功效转换为整型在利用强制转换时应留意以下问题:
1.范例说明符和表达式都必需加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。
2.无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度举办的姑且性转换,而不改变数听说明时对该变量界说的范例。
main()
{
float f=5.75;
printf("(int)f=%d,f=%f\n",(int)f,f);
}
f<–5.75
将float f强制转换成int f float f=5.75;printf("(int)f=%d,f=%f\n",(int)f,f); 本例表白,f虽强制转为int型,但只在运算中起浸染, 是姑且的,而f自己的范例并不改变。因此,(int)f的值为 5(删去了小数)而f的值仍为5.75。

根基运算符和表达式

运算符的种类、优先级和团结性
C语言中运算符和表达式数量之多, 在高级语言中是少见的。正是富厚的运算符和表达式使C语言成果十分完善。 这也是C语言的主要特点之一。
C语言的运算符不只具有差异的优先级, 并且尚有一个特点,就是它的团结性。在表达式中, 各运算量参加运算的先后顺序不只要遵守运算符优先级此外划定,还要受运算符团结性的制约, 以便确定是自左向右举办运算照旧自右向左举办运算。 这种团结性是其它高级语言的运算符所没有的,因此也增加了C语言的巨大性。

运算符的种类C语言的运算符可分为以下几类:
1.算术运算符
用于种种数值运算。包罗加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(–)共七种。
2.干系运算符
用于较量运算。包罗大于(>)、小于(<)、便是(==)、 大于便是(>=)、小于便是(<=)和不便是(!=)六种。
3.逻辑运算符
用于逻辑运算。包罗与(&&)、或(||)、非(!)三种。
4.位操纵运算符
参加运算的量,按二进制位举办运算。包罗位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
5.赋值运算符
用于赋值运算,分为简朴赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
6.条件运算符
这是一个三目运算符,用于条件求值(?:)。
7.逗号运算符
用于把若干表达式组合成一个表达式(,)。
8.指针运算符
用于取内容(*)和取地点(&)二种运算。
9.求字节数运算符
用于计较数据范例所占的字节数(sizeof)。
10.非凡运算符
有括号(),下标[],成员(→,.)等几种。

优先级和团结性
C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的举办运算。 而在一个运算量两侧的运算符优先级沟通时, 则按运算符的团结性所划定的团结偏向处理惩罚。 C语言中各运算符的团结性分为两种,即左团结性(自左至右)和右团结性(自右至左)。譬喻算术运算符的团结性是自左至右,即先左后右。如有表达式x-y+z则y应先与“-”号团结, 执行x-y运算,然后再执行+z的运算。这种自左至右的团结偏向就称为“左团结性”。而自右至左的团结偏向称为“右团结性”。 最典范的右团结性运算符是赋值运算符。如x=y=z,由于“=”的右团结性,应先执行y=z再执行x=(y=z)运算。 C语言运算符中有不少为右团结性,应留意区别,以制止领略错误。

算术运算符和算术表达式根基的算术运算符
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。

#p#分页标题#e#

自增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。算术表达式表达式是由常量、变量、函数和运算符组合起来的式子。 一个表达式有一个值及其范例, 它们便是计较表达式所得功效的值和范例。表达式求值按运算符的优先级和团结性划定的顺序举办。 单个的常量、变量、函数可以看作是表达式的特例。

 

    关键字:

天才代写-代写联系方式