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

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;

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


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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容