• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

C学习-基础:运算符 (++ ?=) 和 表达式

image.png

  • 优先级:指各种运算符号的运算优先顺序

算术运算优先于关系运算

  • 结合性:指运算符号和运算对象的结合方向

从左向右(左结合): 算术运算符为左结合    a-b+4

从右向左(右结合): 赋值运算符为右结合    a= b = 5

优先级与结合性小结

image.png

基本算术运算符:(+ - *  / %)

  • 加法运算符“+”

  • 减法运算符“-”

  • 乘法运算符“*” 

  • 除法运算符“/”

  • 求余运算符(取模运算符)“%”

算术表达式

用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子.

例子:(x+r)*8-(a+b)/7

自增/自减 算术运算符 (i++; ++i)

  • 前置自加:++i: 是i先加1,然后引用i。

  • 后置自加:i++: 是先引用i,然后i加1。

#include <stdio.h>
int main(int argc, char const *argv[])
{
int waitag;

int m,n,k;
m=15; n=20;
k=(--m)+(--n); // 因为 -- 优先级本来就比 + 高,这里的扩号只是为了增加可读性
printf("m=%d,n=%d,k=%d\n",m,n,k);
m=15, n=20;
k=(m--)+(n--);   // 因为 -- 优先级本来就比 + 高,这里的扩号只是为了增加可读性
printf("m=%d,n=%d,k=%d\n",m,n,k);

scanf("%d",&waitag);
return 0;
}

结果:

m=14,n=19,k=33
m=14,n=19,k=35

赋值运算符 (=)

C语言中赋值运算符为“=”, 他叫赋值,不是等于

复合赋值运算符  :  +=  -=  *=   /=   %=

例如:

a+=10;  等价于 a=a+10;

a*=b+10; 等价于  a=a*(b+10);

a%=10;   等价于 a=a%10;

C语言中采用这种复合运算符的目的:一是为了简化程序,使程序精练;二是为了提高编译效率。

逗号运算符 ( , 优先级最低;自左向右 )

逗号表达式就是用逗号运算符把两个表达式连接起来所形成的表达式。

其一般形式为:表达式1,表达式2,....表达式n

逗号表达式的求值过程是:先求表达式1的值,再求表达式2的值,..... 最后表达式n的值就是整个逗号表达式的值

#include <stdio.h>
int main(int argc, char const *argv[])
{
int waitag;
int m=5,n=5,x,p;

p=(x = n--,m--);
printf("x:%d,m:%d,n:%d,p:%d",x,m,n,p);

scanf("%d",&waitag);
return 0;
}

运行结果:

x:5,m:4,n:4,p:5

关系运算符(<  >  <=  >=  ==  !=)

关系运算是逻辑运算的一种简单形式,主要用于比较

  • <          小于

  • <=      小于等于

  • >          大于

  • >=      大于等于

  • = =       等于

  • !=       不等于 

关系表达式的值只有两个,“真”和“假”。在C语言中“真”用1表示,“假”用0表示。当关系式成立时其值为真,否则为假 

逻辑运算符( &&    ||   !  )

为了表示复杂的条件,需要将若干个关系表达式连接起来。

  • &&    逻辑与

  • ||      逻辑或

  • !        逻辑非

逻辑表达式的值也只有两个,“真”和“假”

条件运算符(? :)

条件运算符(? :)是三目运算符,具有右结合性。条件表达式的一般格式:

 表达式1 ? 表达式2 : 表达式3

如果表达式1为非0,执行表达式2;否则,执行表达式3。

#include <stdio.h>
int main(int argc, char const *argv[])
{
int waitag;
int m=5,n=5,x;

x=m>n?m++:n++ ;
printf("x:%d,m:%d,n:%d",x,m,n);

scanf("%d",&waitag);
return 0;
}

运行结果:

x:5,m:5,n:6

右结合性

条件运算符的结合性是 “自右至左”。如:

a > b ? a : c > d ? c : d     

相当于:

a > b ? a : (c > d ? c : d)

优先级

条件运算符的优先级高于赋值运算符,而低于关系运算符算术运算符。因此,

max = a > b ? a : b+1

等价于:max=(a>b) ? a : (b+1)

而不等价于: max=(a>b ? a : b)+1


0
0
下一篇:C学习-基础:数据类型转换

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。