美文网首页
C语言运算符

C语言运算符

作者: Cc_5691 | 来源:发表于2018-08-29 09:50 被阅读0次

    赋值运算注意点:

    • 1.赋值运算的结合性:右结合性
    • 2.赋值运算的优先级低于算数运算符
      int res = 10;
      res += 10 - 5; // res = res + (10 - 5); res = 10 + (10 - 5);
      printf("res = %i\n", res);

    自增自减

    自增和自减可以写在变量前面, 也可以写在变量后面

    • 写在前面和后面的区别:

      • 如果自增和自减写在变量前面, 代表先自增和自减再参与其它运算
      • 如果自增和自减写在变量后面, 代表先参与其它运算再自增和自减

      int num = 10;
      int res = 10 + num++; // int res = 10 + 10; num++
      int res = 10 + num--; // int res = 10 + 10; num--
      printf("res = %i\n", res); // 20 20
      printf("num = %i\n", num); // 11 9

    int num = 10;
    int res = 10 + ++num; // ++num; int res = 10 + 11
    int res = 10 + --num; // --num; int res = 10 + 9
    printf("res = %i\n", res); // 21 19
    printf("num = %i\n", num); // 11 9
    
    • 注意点:

      • 1.自增和自减只能用于变量, 不能用于常量和表达式
      • 2.在企业开发中自增和自减最好单独出现
      • 3.同一个表达式中同一个变量同时自增或自减, 这种格式的表达式在C语言中没有规定如何运算
      • 所以结果是不确定的, 在不同的编译器下运行的结果不同

    sizeof运算符

    • sizeof运算符
      • 格式:
      • 第一种格式:
      • sizeof(变量/常量/数据类型);
      • 第二种格式:
      • sizeof 变量/常量
      • 作用:
      • sizeof运算符是专门用于计算变量/常量/数据类型占用的存储空间的
      • int 占4字节 ; double 占8字节
    • 注意点:
      • 1.sizeof是一个运算符, 不是一个函数
      • 2.既然sizeof是一个运算符, 所以它也有优先级
      • 3.sizeof运算符的优先级高于算数运算符

    int res = sizeof(3.14 + 1);
    printf("res = %i\n", res);//8

    int res = sizeof3.14 + 1;
    printf("res = %i\n", res);//9

    关系运算符

    • 关系运算符
      > >= < <= == !=
      返回值: 要么是0, 要么是1
      0 代表关系不成立 1代表关系成立
      在C语言中非0即真
      只有数值是0 才代表是假, 其它的都是真
    • 优先级
      > >= < <= 优先级高于 == !=

    逻辑运算符

    • 逻辑运算符
    • 1.逻辑与 &&
      规则: 一假则假
      特点: 逻辑短路, 只要第一个表达式为假, 那么第二个表达式就不会计算

    int a = 10;
    int res = (10 > 19) && (++a > 5);
    printf("res = %i\n", res); // 0(假)
    printf("a = %i\n", a); // 10
    // 原因: 无论第二个表达式的结果是真是假, 整个表达式的结果都是假, 所以再计算第二个表达式没有任何意义, 所以只要第一个表达式为假, 第二个表达式就不会运算

    • 2.逻辑或 ||
      规则: 一真则真

    int a = 10;
    int res = (10 > 9) || (++a > 5);
    printf("res = %i\n", res); // 1(真)
    printf("a = %i\n", a); // 10
    // 原因: 无论第二个表达式的结果是真是假, 整个表达式的结果都是真, 所以再计算第二个表达式没有任何意义, 所以只要第一个表达式为真, 第二个表达式就不会运算

    • 3.逻辑非 !
      规则: 真变假假变真

    三目运算符

    • 三目运算符
      • 格式: 表达式 ? 结果A : 结果B;
      • 结果:
        表达式的值为真, 那么就返回结果A
        表达式的值为假, 那么就返回结果B
      • 注意点:
        三目运算符中 ?:不能分开使用
        三目运算符的优先级低于算数运算符

    int temp1 = 10 + 5;
    int temp2 = 5 + 5;
    int res = (temp1 > temp2) ? 666 : 888;
    printf("res = %i\n", res);//666

    相关文章

      网友评论

          本文标题:C语言运算符

          本文链接:https://www.haomeiwen.com/subject/wfqhwftx.html