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
  • 相关阅读:
    算法----(1)冒泡排序
    淘宝爬虫
    爬虫_豆瓣电影top250 (正则表达式)
    爬虫_猫眼电影top100(正则表达式)
    Android 简单调用摄像头
    Android 简单天气预报
    思维模型
    This view is not constrained, it only has designtime positions, so it will jump to (0,0) unless you
    Android studio preview界面无法预览,报错render problem
    Android studio 3.1.2报错,no target device found
  • 原文地址:https://www.cnblogs.com/niao-ge/p/12040994.html
Copyright © 2011-2022 走看看