算术运算符和算术表达式
C语言在计算上也是很丰富,现在给大家C语言的运算符
<算术运算符>   +  –  *  /  %
<关系运算符>    <  >  ==  >=  <=  !=(不等于)
<逻辑运算符>   !(非)   &&(与)   ‖(或)
<位运算符>    << (左移) >>(右移) ~ (按位取反)    |(按位或)    ∧(按位异或)   &(按位与)
<赋值运算符>   =
<条件运算符>   ?:(方向是至右向左)
<逗号运算符>    ,
<指针运算符>    *(指针)    &(取地址)
<求字节运算符>   sizeof  
<强制类型转换运算符>   (类型)
<分量运算符>    。  ->
<下标运算符>    []
在C语言中还是有很多的运算符,其他的请朋友们自己看书了!
优先级和结合性
C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。 而在一个运算量两侧的运算符优先级相同时, 则按运算符的结合性所规定的结合方向处理。 C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z则y应先与“-”号结合, 执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。 最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。 C语言运算符中有不少为右结合性,应注意区别。
算术运算符和算术表达式基本的算术运算符
加法运算符“+”加法运算符为双目运算符,即应有两个量参与加法运算。如a+b,1+2……。具有右结合性。
减法运算符“-”减法运算符为双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-5等具有左结合性。
乘法运算符“*”双目运算,具有左结合性。
除法运算符“/”双目运算具有左结合性。参与运算量均为整型时, 结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。大家在理解的时候要特别的注意,不要搞错了才好。
强制转换的运算符号
有了这个就可以将一个表达市转换成我们想要的类型咯。它的一般形式为(类型名) (表达式);
(int)a就是把a转换成int型
(double)a+b就是把a+b的值转换成double型  
来举个例子吧:
例题1:把2.3和3.2做加法运算使之以整形的结果输出。 代码如下
#include<stdio.h>
void main()
{
float a;int b;
a=1.2;
b=(int)a
printf(“a=%f,b=%d\\n”,a,b);
}
大家现在就明白了吧~

自增++,自减–运算符
自增运算符记为“++”,其功能是使变量的值自增1。自减运算符记为“–”,其功能是使变量值自减1。自增,自减运算符均为单目运算,都具有右结合性。可有以下几种形式:
++i i自增1后再参与其它运算
–i i自减1后再参与其它运算
i++  i参与运算后,i的值再自增1
i–  i参与运算后,i的值再自减1
但是大家要注意哦自增++,自减–只能十用于变量的,常量使不能用的,而且表达式也是不能用的。必须是语句和变量。
例如1++,a++这些都是错的,要写成a++;大家要注意哦,有了那个分号才能算是语句哈~
还有就是自增++,自减–结合方向是右向左的,具体的理解大家还是看代码:
void main()
{
int i=1;
printf(“%d\\n”,++i);
printf(“%d\\n”,–i);
printf(“%d\\n”,i++);
printf(“%d\\n”,i–);
printf(“%d\\n”,-i++);
printf(“%d\\n”,-i–);
printf(“%d\\n”,-++i);
printf(“%d\\n”,–i);
}
结果我就不打了,我觉得还是大家先自己想下答案然后上机编译下,看看结果是否相同。大家记住学习计算机语言一定要自己多多的上机独立编写代码才能提高哦,

赋值运算符和赋值表达式:
其实这个我是不准备讲的,我觉得一般前面的代码都写那么多了 大家应该都能明白哦,
简单赋值运算符和表达式简单赋值运算符记为”=”。由”=”连接的式子称为赋值表达式。其一般形式为: 变量=表达式 如a=3 这个是表达式
但是大家千万注意哈,“=”“==”不一样的“=”十赋值为的 意思“==”这个才是等于号,别老是想着数学哟。
而语句呢?按照C语言规定, 任何表达式在其未尾加上分号就构成为语句。因此如x=8;a=b=c=5;都是赋值语句,在前面各例中我们已大量使用过了。就不再赘述咯。
我们现在来讲赋值
简单赋值及表达式
简单赋值我们在前面的数据类型都讲过了,现在我只提几个大家注意的地方,有的朋友在赋值的时候总是不忘记数学,如:a=1,b=1,可能有的朋友在赋值的时候就会写成a=b=1,这样可是就错了哦,必须写成 a=1;b=1;
复合赋值符及表达式
在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。 构成复合赋值表达式的一般形式为: 变量 双目运算符=表达式 它等效于 变量=变量 运算符 表达式 例如: a+=1 等价于a=a+1  x*=y+1等价于x=x*(y+1)  a%=b 等价于a=r%b
复合赋值符这种写法,对初学者可能不习惯, 但十分有利于编译处理,等到大家熟练了,就会爱上它的,我现在就很喜欢这样写,应为清爽嘛而且还能提高编译效率并产生质量较高的代码。我们还是用例子来说明哈,我们上学期考C语言有一道题:“a=3求出a+=a-=a*a的值”
这个题目还是比较简单的,但是还是要细心,我们来分析:这个表达式是要从右向左来进行运算,而a-=a*a等价于a=a-a*a,可能有的朋友已经糊涂了,呵呵,不着急,慢慢来,
第一步 a-=a*a 等价于a=a-a*a 把a=3带入就是a=3-3*3=-6
第二步 a+=-6 等价于a=a+(-6) 而这个时候等号后的第一个a被赋予了-6 所以就是a=-6+(-6)=-12
大家看明白了吗?
要是大家怀疑可以写个简单是程序验证下哦
void main()
{
int a,b;
a=3;
b=a+=a-=a*a ;
printf(“%d\\n”,b);
}
其实这个是个手熟的过程写的多了自然也就理解了哦

逗号运算符
C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。
其一般形式为: 表达式1,表达式2 ……表达式N其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。
void main()
{
int a=1,b=2,c=3,x,y;
x=a+b,y=b+c;
printf(“y=%d,x=%d”,y,x);
}
本例中,y等于整个逗号表达式的值,也就是表达式2的值,x是第一个表达式的值。对于逗号表达式还要说明两点:
1.逗号表达式一般形式中的表达式1和表达式2 也可以又是逗号表达式。例如: 表达式1,(表达式2,表达式3) 形成了嵌套情形。因此可以把逗号表达式扩展为以下形式: 表达式1,表达式2,…表达式n 整个逗号表达式的值等于表达式n的值。
2.程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。
3.并不是在所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数参数表中逗号只是用作各变量之间的间隔符。

关系运算符
种类:<  <=   ==   >=   >    !=   结合方向:自左向右,
关系表达式的值:是逻辑值“真”或“假”,用1和0表示这个就像布尔型一样的,只是一个用TURE,FALSE一个用1,0表述罢了。我们还是用例子来说话,看下面的代码段:
int a=3,b=2,c=1,d,f;
   a>b    //表达式值1
   (a>b)==c  //表达式值1
    b+c<a    //表达式值0
    d=a>b
    f=a>b>c
    给出了注释知道d和f的值十多少吗?d=1,f=o;
还算十比较好理解吧,下面的这个题目大家就要自己想咯:
int  i=1, j=7,a;  
a=i+(j%4!=0);   
a的值十多少呢 ?大家考虑下。

逻辑运算符和表达式
逻辑运算的种类:!(非)   &&(与)   ||(或)
C语言中,运算量:
    0表示“假”,
    非0表示“真”,
    运算结果:   0表示“假”,
    1表示“真”
在逻辑运算符中有一个特别要注意就是结合方向
! :从右向左
&&:从左向右
||:从左向右
千万别记错了哦 ,还是来看个例子哈:
a=1;b=2;
!a         值为0
a||b       值为1
!a||b      值为1
5>3&&2||8<4-!0    这个表达式等价于(5>3)&&2||(8<(4-(!0)))   值为1
现在大家都有点了感性的认识了吧,
短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符
例  a&&b&&c               只在a为真时,才判别b的值;只在a、b都为真时,才判别 c的值
例  a||b||c               只在a为假时,才判别b的值;只在a、b都为假时,才判别 c的值

最后一个是条件运算符及表达式,
它的一般形式为:  expr1  ?  expr2  :  expr3   结合方向是2自右向左 如:a>b?a:c>d?c:d等价于a>b?a:(c>d?c:d);
再来个例子吧:
max=(a>b)?a:b; 执行该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max。
大家一看觉得和IF语句有点像,而且还是可以嵌套,但是这个却是不能代替IF语句的,还是来个例子吧
if (a>b)
  printf(“%d”,a);
else
   printf(“%d”,b);
这个IF语句的代码用条件表达式就是表示成printf(“%d”,a>b?a:b);
好了这些该死的前置知识讲完了,我们可以开开心心的进入后面的学习了,唉,前面的打字把我手都打断了,做个小广告sogou输入法真的很好用。

评论被关闭。