zoukankan      html  css  js  c++  java
  • C 基本运算

    算术运算

    C语言一共有34种运算符 包括了常见的加减乘除运算

    1. 加法运算+

    除开能做加法运算 还能表示正号: +5, +90

    2. 减法运算-

    除开能做减法运算 还能表示符号: -10, -29 

    3. 乘法运算*

    注意符号 不是x 而是*

    4. 除法运算/

    注意符号 不是÷ 也不是 而是/

    整数除于整数 还是整数 1/2的值是0 这个并不是二分之一

    5. 取余运算%(模运算)

    什么是取余: 两个整数相除之后的余数

    %两侧只能是整数 正负性取决于%左侧的数值 

    6. 注意点

    1> 自动类型转换

    int a = 10.6;

    int b = 10.5 + 1.7;

    自动将大类型转换为了小类型 会丢失精度

    2> 自动类型提升

    int b = 10.5 + 10;

    将右边的10提升为了double类型

    double b = 1.0 / 2;

    解决除法的精度问题 

    3> 强制类型转换

    double a = (double)1 / 2;

    double b = (double)(1 / 2);

     

    赋值运算

    1. 简单赋值

    int a = 10 + 5;的运算过程

    a = b = 10;的运算过程

    等号左边不能是常量 比如10 = 11;

    2. 复合赋值

    复加减乘除余: a += 4 + 5;

     

    自增自减

    1. 简单使用

    ++ 自增运算符 a++, ++a 都等价于a = a+1;

    -- 自减运算符 a--, --a 都等价于a = a-1;

    5++是错误的

    2. ++aa++的区别

    ++a 先把a的值+1 再做其它运算

    a++ a原来的值先做运算 再把a的值+1

     

    sizeof

    1. 作用

    用来计算一个变量或者一个常量 一种数据类型所占的内存字节数

    2. 基本形式

    sizeof( 变量常量 )

    sizeof 变量常量

    sizeof( 数据类型 )

    不能是sizeof 数据类型

     

    关系运算(比较运算)

    1. 条件判断

    默认情况下 我们在程序中写的每一句正确代码都会被执行 但很多时候 我们想在某个条件成立的情况下才执行某一段代码 这种情况的话可以使用条件语句来完成

    2. 真假

    1> C语言中 条件成立称为"" 条件不成立称为"" 因此 判断条件是否成立 就是判断条件的"真假"

    2> 怎么判断真假呢? C语言规定: 任何数值都有真假性 任何非0值都为"" 只有0才为"" 也就是说 108, -18, 4.5, -10.5等都是"" 0则是""

    3. 关系比较

    开发中经常要比较 比如斗地主游戏中牌的大小 利用关系运算符就可以比较两个值的大小

    关系运算符的运算结果只有2: 如果条件成立 结果就为1 也就是"" 如果条件不成立 结果就为0 也就是""

    4. 使用注意

    1> 关系运算符中== !=的优先级相等 <, <=, >, >=的优先级相等 且前者的优先级低于后者: 2==3>1

    2> 关系运算符的结合方向为"从左往右": 4>3>2

    3> 关系运算符的优先级小于算术运算符: 3+4>8-2

      

    逻辑运算

    逻辑运算的结果只有2: ""1 ""0

    1. &&逻辑与

    1> 使用格式

    "条件A && 条件B"

    2> 运算结果

    只有当条件A和条件B都成立时 结果才为1 也就是"" 其余情况的结果都为0 也就是"" 因此 条件A或条件B只要有一个不成立 结果都为0 也就是"" 

    3> 运算过程

    总是先判断条件A是否成立

    a. 如果条件A成立 接着再判断条件B是否成立: 如果条件B成立 "条件A && 条件B"的结果就为1 "" 如果条件B不成立 结果就为0 ""

    b. 如果条件A不成立 就不会再去判断条件B是否成立: 因为条件A已经不成立了 不管条件B如何 "条件A && 条件B"的结果肯定是0 也就是""

    4> 举例

    逻辑与的结合方向是"自左至右" 比如表达式 (a>3) && (a<5)

    a. a的值是4: 先判断a>3 成立 再判断a<5 也成立 因此结果为1

    b. a的值是2: 先判断a>3 不成立 停止判断 因此结果为0

    c. 因此 如果a的值在(3, 5)这个范围内 结果就为1 否则 结果就为0

    5> 注意

    a. 若想判断a的值是否在(3, 5)范围内 千万不能写成3<a<5 因为关系运算符的结合方向为"从左往右" 比如a2 它会先算3<a 也就是3<2 条件不成立 结果为0 再与5比较 0<5 条件成立 结果为1 因此 3<a<5的结果为1 条件成立 也就是说当a的值为2 a的值是在(3, 5)范围内的 这明显是不对的 正确的判断方法是: (a>3) && (a<5)

    b. C语言规定: 任何非0值都为"" 只有0才为"" 因此逻辑与也适用于数值 比如 5 && 4的结果是1 "", -6 && 0的结果是0 ""

    2. ||逻辑或

    1> 使用格式

    "条件A || 条件B"

    2> 运算结果

    当条件A或条件B只要有一个成立时(也包括条件A和条件B都成立) 结果就为1 也就是"" 只有当条件A和条件B都不成立时 结果才为0 也就是""

    3> 运算过程

    总是先判断条件A是否成立

    a. 如果条件A成立 就不会再去判断条件B是否成立: 因为条件A已经成立了 不管条件B如何 "条件A || 条件B"的结果肯定是1 也就是""

    b. 如果条件A不成立 接着再判断条件B是否成立: 如果条件B成立 "条件A || 条件B"的结果就为1 "" 如果条件B不成立 结果就为0 ""

    4> 举例

    逻辑或的结合方向是"自左至右" 比如表达式 (a<3) || (a>5)

    a. a的值是4: 先判断a<3 不成立 再判断a>5 也不成立 因此结果为0

    b. a的值是2: 先判断a<3 成立 停止判断 因此结果为1

    c. 因此 如果a的值在(-∞, 3)或者(5, +∞)范围内 结果就为1 否则 结果就为0

    5> 注意

    C语言规定: 任何非0值都为"" 只有0才为"" 因此逻辑或也适用于数值 比如 5 || 4的结果是1 "", -6 || 0的结果是1 "", 0 || 0的结果是0 ""

    3. !逻辑非

    1> 使用格式

    "! 条件A"

    2> 运算结果

    其实就是对条件A进行取反 若条件A成立 结果就为0 "" 若条件A不成立 结果就为1 "" 也就是说 真的变假 假的变真

    3> 举例

    逻辑非的结合方向是"自右至左" 比如表达式 ! (a>5)

    a. a的值是6: 先判断a>5 成立 再取反之后的结果为0

    b. a的值是2: 先判断a>3 不成立 再取反之后的结果为1

    c. 因此 如果a的值大于5 结果就为0 否则 结果就为1

    4> 注意

    a. 可以多次连续使用逻辑非运算符: !(4>2)结果为0 "" !!(4>2)结果为1 "" !!!(4>2)结果为0 ""

    b. C语言规定: 任何非0值都为"" 只有0才为"" 因此 对非0值进行逻辑非!运算的结果都是0 0值进行逻辑非!运算的结果为1 !5, !6.7, !-9的结果都为0 !0的结果为1

    4. 优先级

    逻辑运算符的优先级顺序为: 小括号() > 负号 - > ! > 算术运算符 > 关系运算符 > && > ||

    表达式!(3>5) || (2<4) && (6<1) 先计算 !(3>5), (2<4), (6<1)结果为1 式子变为1 || 1 && 0, 再计算1 && 0, 式子变为1 || 0, 最后的结果为1

    表达式3+2<5||6>3 等价于 ((3+2) < 5) || (6>3) 结果为1

    表达式4>3 && !-5>2 等价于 (4>3) &&  ((!(-5)) > 2) 结果为0

     

    三目运算符

    int a = 5 > 10 ? 18 : 25>10不成立 返回第二个 结果是a=2

    int b = 10 > 5 ? 18 : 210>5成立 返回第一个 结果是b=18

    int c = 0 ? 18 : 20"" 返回第二个 结果是c=2

     

      

  • 相关阅读:
    用eclipse创建maven项目
    Maven学习 (一) 搭建Maven环境
    linux下top命令查看cpu占用情况
    Jmeter以non-gui模式进行分布式测试
    如何使用JMeter来实现更大批量的并发的解决方案(即如何设置controller和Agent)
    Linux zip解压/压缩并指定目录
    理解 JMeter 聚合报告(Aggregate Report)
    WebSocket 是什么原理?为什么可以实现持久连接
    JMeter监控服务器CPU, 内存,网络数据
    WebSocket API简介
  • 原文地址:https://www.cnblogs.com/huangyi-427/p/4725782.html
Copyright © 2011-2022 走看看