zoukankan      html  css  js  c++  java
  • 鸟哥的c++入门课(9)--运算符

    运算符是对变量和常量进行某种操作的符号。

    比如, r = i + j;  这一句中,+ 是加法运算符,=是赋值运算符

    下面列出c++中常用的运算符

    赋值运算符

    运算符 名称 例句 例句说明
    = 赋值 x=9 将x的值设置为9

     

    算术运算符

    + 加法
    - 减法
    * 乘法
    / 除法
    % 取模

    加、减、乘、除的运算规则和数学上是一致的;取模的运算结果是两个操作数相除后的余数。

    可以用下面的代码可练习下算术运算符的使用。

    1 #include <iostream>
    2 int main() {
    3     std::cout << "1+2=" << 1+2<<std::endl;
    4     std::cout << "11-2=" << 11 -2 << std::endl;
    5     std::cout << "9*9=" << 9*9 << std::endl;
    6     std::cout << "99/3=" << 99/3 << std::endl;
    7     std::cout << "7%2=" << 7%2<< std::endl;
    8     std::cout << "end"<<std::endl;
    9 }

    运行结果:

    递增递减运算符 

    ++ 递增
    -- 递减

    递增递减运算符可以放在变量的前面,如x++;也可以放在变量的后面,如++x

    前置或后置的区别,请直接看代码

    1 int main() {
    2     int x = 1;
    3     int y = x++;
    4     std::cout << "x=1,y = x++之后,x=" << x << ",y=" << y << std::endl;
    5 
    6     y = ++x;
    7     std::cout << "x=2,y = ++x之后,x=" << x << ",y=" << y<<std::endl ;
    8 }

    运行

     比较运算符

    == 相等 a==b 如果a等于b,则表达式的值是true,否则是false
    != 不等 a!=b 如果a不等于b,则表达式的值是true,否则是false
    < 小于 a<b 如果a小于b,则表达式的值是true,否则是false
    > 大于 a>b  
    <= 小于等于 a<=b  
    >= 大于等于 a>=b  
     1 #include <iostream>
     2 int main() {
     3     int a = 1;
     4     int b = 2;
     5     bool b1 = b == b,b2=a>b,b3=a<=b,b4=2<=b;
     6     std::cout << std::boolalpha;//这句的作用是把bool值输出为true或false,而不是0或1
     7     std::cout << "a==b的结果是" << b1<< std::endl;
     8     std::cout << "a>b的结果是" << b2 << std::endl;
     9     std::cout << "a<=b的结果是" << b3<< std::endl;
    10     std::cout << "2<=b的结果是" <<b4<< std::endl;
    11     return 0;
    12 }

    运行结果

     逻辑运算符

    &&
    ||
    !
    a !a
    true false
    false true
    && 
    aba && b
    true true true
    true false false
    false true false
    false false false
    || 
    aba || b
    true true true
    true false true
    false true true
    false false false

    计算机在使用逻辑运算符进行运算的时候,遵循短路规则。即计算机只会计算得出结果所必需的的计算,而忽略剩余的计算。

    比如  (1==2)&&(a==b) ,计算机计算1==2后发现其结果是false,这是不管a==b的结果是什么,整个表达式的结果都是false,所以就不会计算a==b。

    短路规则

    &&:如果其左侧的表达式结果是false,整个表达式的结果就是false,而不会对&&右侧的表达式求值。

    ||:如果其左侧的表达式结果是true,整个表达式的救国就是true,二不会对||右侧的表达式求值。

    条件运算符

    其基本形式是: 条件?结果1:结果2 。如果“条件”的结果为true,则执行“结果1”;如果“条件”的结果为false,则执行“结果2”

    示例代码

    1 int main() {
    2     int a, b, c;
    3 
    4     a = 1;
    5     b = 2;
    6     c = (a > b) ? a : b;
    7 
    8     std::cout << c << std::endl;
    9 }

    这行结果

     位运算符

    & 桉位与 当两个操作数的对应位都为1时结果的对应位为1,否则为0
    | 按位或 当两个操作数的对应位任意一个为1时结果的对应位为1,否则为0
    ^ 异或 当两个操作数的对应位不同时结果的对应位为1,否则为0
    ~ 按位取反 一元运算符,结果为操作数的每一位取反
    << 左移 左侧操作数的每一位向左移动右侧操作数指定的位数,右边补0
    >> 右移 左侧操作数的每一位向右移动右侧操作数指定的位数,左边补0

    位运算符是以二进制位(bit)位运算单位进行运算的。假设 p和q分别是运算数中的任意两位,则真值表如下:

    p q ~p p&q p|q p^q
    0 0 1 0 0 0
    0 1 1 0 1 1
    1 1 0 1 1 0
    1 0 0 0 1 1

    示例代码

     1 #include <iostream>
     2 #include <bitset>
     3 int main() {
     4     int a=0b0011, b=0b1001, c=0;
     5     std::cout << "  a=" << std::bitset<sizeof(int) * 8>(a) << std::endl;//使用std::bitset是为了将整数输出为二进制格式
     6 std::cout << " b=" << std::bitset<sizeof(int) * 8>(b) << std::endl;  7 std::cout << "a&b=" << std::bitset<sizeof(int) * 8>(a & b) << std::endl;  8 std::cout << "a|b=" << std::bitset<sizeof(int) * 8>(a | b) << std::endl;  9 std::cout << "a^b=" << std::bitset<sizeof(int) * 8>(a ^ b) << std::endl; 10 std::cout << " ~a=" << std::bitset<sizeof(int) * 8>(~a) << std::endl; 11 return 0; 12 }

    运行结果

     复合赋值运算符

    +=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=

    表达式 等价于
    a+=b a=a+b
    a-=b a=a-b
    a*=b a=a*b
    a/=b a=a/b
    a%=b a=a%b
    a>>=b a=a>>b
    a<<=b a=a<<b
    a&=b a=a&b
    a^=b a=a^b
    a|=b a=a|b
  • 相关阅读:
    Ubuntu 18.04 设置静态IP
    面试问题总结
    hadoop集群搭建流程
    胡适:天下没有白费的努力
    学习的技术内容
    Windows MySql安装
    MySql 基础知识
    windows maven 安装与配置
    Logstash抽取数据到Elasticsearch(1)
    后台运行导入数据库
  • 原文地址:https://www.cnblogs.com/niao-ge/p/12040994.html
Copyright © 2011-2022 走看看