运算符与表达式1(~~>==<~~)

@[toc]

目录

# 关于表达式,结合性,优先级...

# 算数

   #  求余运算

# 逻辑

# 自增自减

# 逗号

# 条件 


# 关于表达式,结合性,优先级...

      运算符:表示某种运算功能的符号。 

      表达式:由操作数(常量或变量)和运算符组成的序列。

      按操作功能运算符大致可分为:算术运算符,关系运算符,逻辑运算符,按位运算符以及其他运算符。

      按运算符所需的操作数的个数将运算符分为三类:单目运算符    只能对一个计算量进行运算 ,如取负运算符(-)

                                                                                   双目运算符    只能对两个计算量进行运算 ,如算术运算符(+)     

                                                                                   三目运算符    C语言中只有一个,即条件运算符(?:)

      优先级:各类运算符在表达式中运算的优先顺序。

      结合性:当一个运算量两侧的运算符优先级相同时运算的结合方向。

      规律:结合性:仅单目运算符,赋值运算符和条件运算符是自右向左结合。

       优先级:“单目高于双目,双目高于三目,三目高于赋值”。双目运算符中的10个优先级先后顺序“算数高于移位,移位高于关系,关系高于位逻辑,位逻辑高于逻辑”。

      表达式求值:先按运算符的优先级高低次序执行。如果在一个操作数两侧的运算符优先级相同,则按结合性进行。

# 算数

*乘法运算符a*b
/除法运算符a/b
%求余运算符a%b
+加法运算符a+b
减法运算符a-b  

      ·两个实数相除的结果是双精度实数,两个整数相除的结果为整数。

      ·%运算符要求参加运算的运算对象(操作数)为整数且其右侧不能为0,结果也是整数。

       优先级:()高于 *,/,% 高于 =,-

       结合性:从左到右。

例子:

除法运算    3/6=0,但3.0/6=0.5

                  类型不同的数进行运算,其结果按优先级高的类型定.

                  double高于float;  double>long>unsigned>int>char,short(这里用">"表示“高于”)

   #  求余运算

#include <stdio.h>                    //编译并运行的结果依次为 2,2,-2,-2
int main(void)                          可以看出:结果的符号与前一操作数的符号相同
{
  printf("%d\n",5%3);
  printf("%d\n",5%-3);
  printf("%d\n",-5%3);
  printf("%d\n",-5%-3);
 return 0;
}

    已知:float=2.0;  int b=6,c=3

    求解:a*b/c-1.5+'a'+fabs(-5)=? 

#include <stdio.h>
#include <math.h>
int main (void)
{
  float a=2.0;
  int b=6,c=3;
  printf("%f\n",a*b/c-1.5+'a'+fabs(-5));    //fabs是求绝对值的函数,该函数的返回值是double型的
  return 0;
}                                           //运行结果为   104.500000

# 逻辑

逻辑量:参与逻辑运算的操作数。                      

运算符含义举例结果
逻辑“非”!30
&&逻辑“与”3&&00
||逻辑“或”3||0

1

  • C语言中,逻辑运算结果用数值1表示真,数值0表示假
  • 逻辑运算中,非0当做真,0作为假,因此任何类型的数据都可以参与到逻辑运算中

    优先级:!>&&>||                           结合性:自左至右

  a&&b       a,b两数都为真时,结果为真;只要有一个为假,结果为假(0)

  a||b          a,b两数都为假时,结果为假;只要有一个为真,结果为真(1)

  !a             a为真时结果为假,a为假时结果为真

 例子:      设: int a=5;float b=3.5;

                  计算: !a  ,  !(a<b)  ,  !a&&!b  ,  !(a&&b)  结果依次为: 0,1,0,0

                  数学上的区间2小于等于x小于等于8,C语言中写成2<=x&&x<=8

     ·在一个&&表达式中,若&&左侧为假,则C语言不会判断右侧;一个||表达式中,如果||左侧为真,则不会判断右侧

# 自增自减

++i,--i              先增减,后运算         先执行i=i+1/i=i-1,再使用i的值

i++,i--              先运算,后增减         先使用i的值,再执行i=i+1/i=i-1

      结合性:自右向左

#include <stdio.h>
int main (void)
{
  int j,i=2;
  j=-i++;                  //等价于j=-(i++);括号里的先使用后加,即先j=-i;再i++
  printf("j=%d,i=%d",j,i);
  return 0;                //运行结果j=-2,i=3
}

· 自增,自减运算符,不能用于常量和表达式中。(如3++,--(a+b)都是非法的)

# 逗号

  逗号运算符:,                           作用:将几个表达式隔开并以此计算。

  优先级:最低                            结合性:自左至右                                          

  整个表达式的值:最后一个表达式的

  例子:

#include <stdio.h>
int main()
{
   int num;
   num=(2+2,2*3,5);         //逗号运算符的优先级最低,若没有括号,此行将会把num=2+2视为一个          
   printf("num=%d",num);    表达式
   return 0;                //运算结果  num=5
}
             

# 条件 

  条件运算符:     ? :               优先级:逻辑>条件>赋值        

  程序表达式的实质就是其控制作用。       结合性:自右至左

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

  求值规则:先求解表达式1的值,若为真,求解表达式2的值作为整个条件表达式的值;若条件表达式1的值为假 ,求解表达式3的值作为整个条件表达式的值。

  例子:当的值为整形的15时,求表达式y=x>10?x/10:x>10?x:-x的结果?

#include <stdio.h>
int main()
{
  int y,x=15;
  y=x>10?x/10:x>10?x:-x;    //先算(x>10?x:-x)得15,再算(x>10?x/10:x);注意x/10,x与10皆为
  printf("y=%d",y);           整数,其结果也只能为整数即得1  
  return 0;
}                           //运行结果y=1

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值