C语言基础——基本运算符

来源:互联网 发布:李宁淘宝代理 编辑:程序博客网 时间:2024/05/22 06:43

  01运算符概述

   单目:     操作数只有一个   -1
   双目运算符:有两个操作数   1 + 1
   三目运算符:有三个操作数

  02-算术运算符

  算数运算符:  +    -     *  (不是 ×)   /     %  (取余、 取模,在C语言中%只使用整数)
int result  = 20.5 % 3;
%结果的正负性只与前面的操作数的正负性有关,与后面的数无关
混合运算       结合方向:从左到右;优先级:优先级高先结合

 03-赋值运算

   赋值运算符

   =      +=      -=     /=    *=    %=

int main(int argc, const char * argv[]){

    int sum = 10;
    printf("sum = %d\n",sum);
    sum += 5;//等价 sum = sum + 5;
    printf("sum = %d\n",sum);
    printf("%d\n",sum += 5);
    
    //sum += (sum += 5); 千万不要使用
    printf("sum = %d\n",sum);
    
    //复合赋值运算符不可以用变量的初始化
    int result = 1;
    result += 2 + 2 * 3;
    printf("result = %d\n",result);
    //所有的赋值运算的优先级小于算术运算的优先级
    result *= 2 + 5;//首先会计算出右边的算数表达式
    printf("result = %d\n",result);
    
    return 0;
}

    = 的基本使用

int test(){
    int a ;
    //赋值运算是有返回值
    a = 10;
    printf("%d\n",a = 10);
    //链式赋值
    int b,c,d;
    b = c = d = a;
    printf("%d,%d,%d\n",b,c,d);
    return 0;
}

    自增自减

  对于 a = a + 1 (效率最低)
      a += 1 (其次)
      ++a (最高的)
      ++a
      a++        // 等价a = a + 1;   a += 1;
      --a          // 等价 a = a -1;
      a--
      //++在后,先进行其他运算,然后自身+1
      //++在前,先自增,然后参与其他运算
      //--在后,先参与其他运算然后自身-1
      //--在前,先自减,然后参与其他运算
 

05sizeof运算符

 #include <stdio.h>
int main(int argc, const char * argv[]){
    //常量:计算这个常量所占用存储空间的字节数,内存中最小单位字节
    //sizeof 是运算符,不是函数
    int result = sizeof(10);
    result = sizeof(10.1);
    result = sizeof(10.1f);
    result = sizeof('A');
    
    result = sizeof 10;
    printf("result = %d\n",result);
    //变量:计算变量所占用的存储空间的字节数
    double a;
    result =  sizeof(a);
    result = sizeof a;
    printf("result = %d\n",result);
    //类型:计算这种类型的变量或者常量所占用存储空间,而不是类型本身所占用的存储空间,类型本身是不占用存储空间的
    result = sizeof(int);
//  result = sizeof int;//错误
    printf("result = %d\n",result);
    return 0;
}

  06逗号表达式

#include <stdio.h>
int main(int argc, const char * argv[]){
    int a,b,c;//int a; int b; int c;      //这个不是逗号表达式
//    printf("%d", int a);
    //逗号表达式的运算结果是最后一个表达式的值
//    int result = (1,2,3,8);
    //逗号表达的结合方向是从左到右
    int result = (a = 1,a++,++a);
    printf("result = %d\n",result);
    return 0;
}

  07比较运算符

特点: 只有两种返回值要么 1 要么 0
  >      <      >=     <=    ==  等于     !=

int main(int argc, const char * argv[]){
    int a = 3;
    //比较运算符优先级高与赋值运算的
    //结合方向:从左到右
    //优先级:== != 低于其他几个
    int result = a > 5 == 1;
    result = a < 6 > 2;
    result = a == 10 < 2;
    printf("result = %d\n",result);
    
    // [2,5]
    result = 5 >= a >= 2;//错误写法
    printf("result = %d\n",result);
    return 0;
}

  08逻辑运算符

  逻辑运算符:链接条件运算符            特点:运算结果只能是0或1
  && 优先级 高于 ||                 && || 结合方向 从左到右
  一般情况下双目运算的结合方向都是从左到右的
  单目运算符 结合方向一般都是从右到左
   -  !
   ++ --
  && 逻辑与  只有两边的操作数都为真 1,才为真1         口诀:   一假则假
  ||  逻辑或  只要有个为真就为真,全假才为假                 口诀:    一真则真
  !  逻辑非                                                                           口诀:真变假,假变真

     结合方向:从右到左

int main(int argc, const char * argv[]){
    //C语言中 所有数值都有真假性,只有0是假的,其他都是真的
    // [2,5]
    int a = 7;
    //逻辑与
    int result  = a >= 2 && a <= 5;

    //不在(2,6)区间
    //逻辑或

    result = a <= 2 || a >=6;   

    result = !!5;
    printf("result = %d\n",result);
    int result1  = 1 && (0 || 1);
    printf("result = %d\n",result1);
    
    int a = 10;
    &&当前面这个表达是为假的时候,后面的表达式就不参与运算了 (短路&&)
    result1 = a++ > 10 && a-- < 5;
    printf("result = %d,a = %d\n",result,a);
    || 当前面的表达式为真的时候,后面的表达式就不参与运算了, (短路||)
    result1 = a++ >= 10 || a-- < 5;
    printf("result1 = %d,a = %d\n",result1,a);
    return 0;
}

  09三目运算(条件表达式)

   格式:

   条件表达式 ? 结果1 : 结果2 (条件表达式为真,返回结果1,结果为假,返回结果2  )

 #pragma mark 条件表达式的基本使用
int test(){
    int result;
    int a  = 20;
    int b = 10;
    
    result = a > b ? a : b;//取最大值
    printf("result = %d\n",result);
    return 0;
}
.   
     总结:
     1、当判断操作要有返回值并且逻辑简单使用三目运算符
     2、只要是可以使用三目运算符的都可以使用if

     3、当逻辑比较简单的时候,使用三目运算符,会简化代码,并且可以提高代码可以读性

     运算符:
              单目运算符,双目运算符,三目运算符
        算术运算符:+ - *  /  %
        赋值运算符: = += -= /= *= %=
        自增自减
              ++a a = a +1,表达式的值为a+1后结果
              a++ a = a + 1,表达式的值为原来a的值
              --a a = a - 1,表达式的值为a-1后的结果
              a-- a = a - 1,表达式的结果为原来a的值
        sizeof 计算常量、变量、类型所占用存储空间的字节数
        逗号表达式:从左到右进行计算,返回值最后一个表达式的值
        比较运算符:== != > < >= <= y 大于赋值运算 小于算术运算
        逻辑运算符:&&  一假则假 如果前面的表达式为假,后面的表达式就不参与运算了
                  ||  一真则真,如果前面的表达式为真,后面的表达式就不参与运算了
                  !   真变假,假变真
        三目运算符:条件表达式 ? 结果1 : 结果2 ,若条件表达式成立则返回结果1 否则返回结果2


0 0
原创粉丝点击