C语言之运算关系

1.关系运算(>, >=, <, <=, ==, !=) 
   (1)语法: a和b的类型相同,且必须满足自动类型转换规则
   (2)运算法则:如果a和b的类型不满足要求,编译器会尝试自动转换:

    注意:不要比较两个浮点数是否相等,因为浮点数在计算机中的二进制可能存在误差,所以如果要比较按如下比较

              假设a和b是两浮点数

判断等于的时候,就是if(fabs(a-b)<=1E-6)。(fabs是浮点数绝对值的函数,1E-6就是0.000001)



             判断大于的时候,就是if(a>b && fabs(a-b)>1E-6)。
             判断小于的时候,就是if(a<b && fabs(a-b)>1E-6)。
 

2.逻辑运算(&& , || , !) 

   (1)a && b
   A.首先计算a, 确定a的真假
           B.如果a为假, 不计算b,表达式的结果为假
              如果a为真, 再计算b, 最后计算整个表达式的结果      
    (2)a || b
             A.首先计算a, 确定a的真假
             B.如果a为真, 不计算b,表达式的结果为真
                如果a为假, 再计算b, 最后计算整个表达式的结果             
    (3)!a
             首先计算a,再计算!a

         

例:已知 int a = 5, b = 6; int c;

       c = (a > b) && (b++) || (++a);
       (1) 计算 a > b 为假
       (2) 确定 (a > b) && (b++) 为假, 没有计算b++
       (3) ++a 为6,a为6 ,b还是为6
       (4) 确定 (a > b) && (b++) || (++a)为真(1)
       (5) c = 1
            
            

                  

3.逗号运算

   运算法则:如果操作数是表达式, 从左到右依次计算,最后一个操作数的结果作为整个表达式的值(值, 类型)   

   例: int a = 5, b = 6,c=0;
        c=(a + 1, b + 2, a++, b + 3);

        a 为 6,括号内整个表达式的值为9,即c=9


4.取余运算

   运算规则:商(可以是负数)乘以除数的绝对值要小于被除数的绝对值,再相减取余数(可以是负数)

   例:5 % (-4) = 1                  (-5) % 4 = -1                    (-5)%(-4)= -1

       -1                                    -1                                         1
     -----                               -----                                     -----
-4 |  5                         4 |  -5                                  -4|  -5
       4                                     -4                                        -4
     -----                             -----                                    ------
       1                                     -1                                         -1

注意:逻辑位运算(&,|,~,^)也需遵循以下规则:
          1. a和b的类型必须相同, 且必须满足自动类型转换规则, 不能是浮点型
              如果a和b的类型不同,编译器尝试自动转换,结果根据自动类型转换规则来定
          2. & 的作用是位清零,| 的作用是位置1,~ 的作用是整体取反,^ 的作用是位取反

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值