美文网首页
笔记2018-08-28

笔记2018-08-28

作者: 我叫你猜猜 | 来源:发表于2018-08-29 18:08 被阅读0次

    类型转换

    • 自动类型转换
      • 运算转换(编译器会自动把小类型转换为大类型)
        int num = 10;
        double vauble = 3.0;
        double res = num / value;
    
    • 赋值转换(将等号右边的类型转换为等号左边的类型)
        int num = 10;
        double vauble = num;
    
    • 强制类型转换
        int num = 10;
        double res = (double)num;
    

    赋值运算符

    • 赋值运算符的结合性(右结合)和优先级
    int number = 10;
    // 赋值运算符优先级是14, 普通运算符优先级是3和4, 所以先计算普通运算符
    // 普通运算符中乘法优先级是3, 加法是4, 所以先计算乘法 
    // number += 1 + 25; number += 26; number = number + 26; 
    number = 36; 
    number += 1 + 5 * 5; 
    printf("number = %i\n", number); // 36 }
    

    sizeof 运算符

    • 作用:可以用来计算一个变量或常量所占的字节内存数.
    • 格式:
      • sizeof( 变量\常量 );
        sizeof(10); char c = 'a'; sizeof(c);
      • sizeof 变量\常量;
        sizeof 10; char c = 'a'; sizeof c;
      • sizeof( 数据类型);
        sizeof(float); 如果是数据类型不能省略括号
      • sizeof 面试题
        • sizeof()和+=、*=一样是一个复合运算符, 由sizeof和()两个部分组成, 但是代表的是一个整体
        • 所以sizeof不是一个函数, 是一个运算符, 该运算符的优先级是2
    #include <stdio.h> 
    int main(){ 
    int a = 10; 
    double b = 3.14; 
    // 由于sizeof的优先级比+号高, 所以会先计算sizeof(a); 
    // a是int类型, 所以占4个字节得到结果4 
    // 然后再利用计算结果和b相加, 4 + 3.14 = 7.14 
    double res = sizeof a+b; 
    printf("res = %lf\n", res); // 7.14 
    }
    

    逗号运算符

    • 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把多个表达式连接起来组成一个表达式,称为逗号表达式

    • 逗号运算符会从左至右依次取出每个表达式的值, 最后整个逗号表达式的值等于最后一个表达式的值

    • 格式: 表达式1,表达式2,… …,表达式n;

    #include <stdio.h> 
    int main(){ 
    int a = 10, b = 20, c;
    // ()优先级高于逗号运算符和赋值运算符, 所以先计算()中的内容 
    // c = (11, 21); 
    // ()中是一个逗号表达式, 结果是最后一个表达式的值, 所以计算结果为21  
    // 将逗号表达式的结果赋值给c, 所以c的结果是21 
    c = (a + 1, b + 1); 
    printf("c = %i\n", c); // 21 }
    

    三目运算符

    • 条件运算符是C语言的唯一的三目运算符,它需要3个数据或表达式构成条件表达式
    • 格式 : 表达式1?表达式2(结果A):表达式3(结果B)
    三目运算符示意图
    • 求值规则:
      • 如果"表达式1"为真,三目运算符的运算结果为"表达式2"的值(结果A),否则为"表达式3"的值(结果B)
    示例: 
    int a = 10; 
    int b = 20; 
    int max = (a > b) ? a : b; 
    printf("max = %d", max); 
    输出结果: 20 
    等价于: 
    int a = 10; 
    int b = 20; 
    int max = 0; 
    if(a>b){ 
      max=a; 
     }else { 
      max=b; 
    }   
    printf("max = %d", max);
    
    • 注意点:
      1.条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符
      2.条件运算符?和:是一个整体,不能分开使用
      3.条件运算符的结合方向是从右至左
    #include <stdio.h>
    int main(){ 
    int a = 10; 
    int b = 5; 
    // 先计算 a > b 
    // 然后再根据计算结果判定返回a还是b 
    // 相当于int max= (a>b) ? a : b; 
    int max= a>b ? a : b; 
    printf("max = %i\n", max); // 10 
    }
    
    #include <stdio.h>
    int main(){ 
    int a = 10; 
    int b = 5; 
    int c = 20; 
    int d = 10; 
    // 结合性是从右至左, 所以会先计算:后面的内容 
    // int res = a>b?a:(c>d?c:d); 
    // int res = a>b?a:(20>10?20:10); 
    // int res = a>b?a:(20); 
    // 然后再计算最终的结果 
    // int res = 10>5?10:(20); 
    // int res = 10; 
    int res = a>b?a:c>d?c:d; 
    printf("res = %i\n", res); 
    }
    

    相关文章

      网友评论

          本文标题:笔记2018-08-28

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