美文网首页
2018-08-29C语言运算符-02

2018-08-29C语言运算符-02

作者: Ending_cy | 来源:发表于2018-08-29 18:24 被阅读0次

    sizeof运算符

    • sizeof可以用来计算一个变量或常量所占的内存字节数
      标准格式: sizeof(常量 or 变量);
    • 其他格式
      sizeof 变量\常量;
    • int a = 10;
    • sizeof a;
    • sizeof 10;
      sizeof( 数据类型);
    • sizeof(float);
      sizeof不是一个函数, 是一个运算符, 该运算符的优先级是2

    逗号运算符

    • 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把多个表达式连接起来组成一个表达式,称为逗号表达式
    • 逗号运算符会从左至右依次取出每个表达式的值, 最后整个逗号表达式的值等于最后一个表达式的值


    关系运算符

    默认情况下,我们在程序中写的每一句正确代码都会被执行。但很多时候,我们想在某个条件成立的情况下才执行某一段代码
    这种情况的话可以使用条件语句来完成,但是学习条件语句之前,我们先来看一些更基础的知识:如何判断一个条件是否成立


    • C语言中的真假性
      在C语言中,条件成立称为“真”,条件不成立称为“假”,因此,判断条件是否成立,就是判断条件的“真假”
      怎么判断真假呢?C语言规定,任何数值都有真假性,任何非0值都为“真”,只有0才为“假”。也就是说,108、-18、4.5、-10.5等都是“真”,0则是“假”
      关系运算符的运算结果只有2种:如果条件成立,结果就为1,也就是“真”;如果条件不成立,结果就为0,也就是“假”
    名称 符号 说明
    大于运算符 > 单目运算符,具有左结合性
    小于运算符 < 单目运算符,具有左结合性
    大于等于运算符 >= 单目运算符,具有左结合性
    小于等于运算符 <= 单目运算符,具有左结合性
    等于运算符 == 单目运算符,具有左结合性
    非等于运算符 != 单目运算符,具有左结合性

    优先级的问题

    • 六个关系运算符中除了 == 和 != 比较低其他四个优先级都比他们高
    • 如果碰到==和!=在一起就看结合性,因为优先级是一样的

    注意点:无论是float还是double都有精度问题, 所以一定要避免利用==判断浮点数是否相等


    逻辑运算符

    逻辑非运算符 ! 单目运算符,具有右结合性
    逻辑与运算符 && 双目运算符,具有左结合性
    逻辑或运算符 || 双目运算符,具有左结合性

    • 逻辑非
      格式: ! 条件;
      运算结果: 真变假,假变真 将最后的运算结果反过来如果是真就变假如果是假就变真
    • 逻辑与
      格式: 条件A && 条件B;
      运算结果:一假则假
      运算过程:只有条件A和条件B都是真的才会返回真
      如果"条件A"成立,"条件B"不成立,结果就为0,即“假”
      如果"条件A"不成立,不会再去判断"条件B"是否成立, 因为逻辑与只要一个不为真结果都不为真
    • 逻辑或
      格式: 条件A || 条件B;
      运算结果:一真则真
      运算过程:只要有一个条件为真就会返回真,只有当两个条件都为假时才会返回0
      如果"条件A"不成立,接着再判断"条件B"是否成立, 如果"条件B"成立,结果就为1,即“真”
      如果"条件A"成立, 不会再去判断"条件B"是否成立, 因为逻辑或只要一个为真结果都为真

    三目运算符

    • 条件运算符是C语言的唯一的三目运算符,它需要3个数据或表达式构成条件表达式

    格式: 表达式1 ?表达式2(结果A):表达式3(结果B)
    示例: 是否结婚 ? 结婚 : 不结婚;

    • 求值规则:

      如果"表达式1"为真,三目运算符的运算结果为"表达式2"的值(结果A),如果"表达式1"假的话,那么结果就是"表达式3"的值(结果B)
    • 注意点
      条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符
      条件运算符?和:是一个整体,不能分开使用
      条件运算符的结合方向是从右至左

    强制类型转换(显示转换) 自动类型转换(隐式转换)
    (需要转换的类型)(表达式) 1.算数转换 2.赋值转换
    • 强制类型转换(显示转换)
      // 将double强制转换为int类型
      int a = (int)10.5;
    • 算数转换
      系统会自动对占用内存较少的类型做一个“自动类型提升”的操作, 先将其转换为当前算数表达式中占用内存高的类型, 然后再参与运算(也就是俗话说运算的时候小类型会被转化为大类型)
      当前表达式用1.0是double类型占用8个字节, 2是int类型占用4个字节
      所以会先将整数类型2转换为double类型之后再计算
      double b = 1.0 / 2;
    • 赋值转换
      赋值时左边是什么类型,就会自动将右边转换为什么类型
      int a = 10.6;

    注意点:
    参与计算的是什么类型, 结果就是什么类型


    类型转换并不会影响到原有变量的值

    相关文章

      网友评论

          本文标题:2018-08-29C语言运算符-02

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