zoukankan      html  css  js  c++  java
  • C++ 之 第四课 C++中的运算符、表达式

      运算符就名词上来说就是用来运算的一些符号,而一个表达式则是由语句和运算符组合。如x=5,或x=a+b这些都是表达式。首先详解讲解运算符。

      运算符可以分为赋值运算符,数学运算符,关系运算符。赋值运算符用(=)表示。如x= 1意思是将1的值赋给x,而不是数学中的相等,这里一定要区别清楚。

      那数学运算符就是我们常用的+,-,*,/,%. C++中还有自增运算,和自减元算,如i++,i--,++i,--i这些元算符通常通常很容易搞错,特别是遇到比较复杂的表达式的时候,很容易搞错。++i在前也叫前自增,顾命思意就是将i的值先递增,让后在赋值,而i++则是则相反,先赋值,然后在递增。举例说明:

     1 #include "stdafx.h"
     2 
     3 #include <iostream>
     4 using namespace std;
     5 int main(int argc, char* argv[])
     6 {
     7     int i = 10;
     8     int j = 10;
     9     cout<<"i = "<<i<<endl;
    10     cout <<"J = "<<j<<endl;
    11     i++;
    12     ++j;
    13     cout<<"i = "<<i<<endl;
    14     cout<<"j = "<<j<<endl;
    15     cout<<"i++="<<i++<<endl;
    16     cout<<"++j="<<++j<<endl;
    17     
    18     return 0;
    19 }

      返回结果我们可以清楚的看到13,14行的结果一样。15行结果为11,而16行是12.,这就说明了前自增就是先加一在赋值。

      关系运算符

      关系运算符就是将两个数进行比较。常见的有=、<、>、<=、>=、!=

    名称 运算符 示例 结果
    等于 == 1==2 false
    不等于 != 1 !=2 true
    大于 > 1>2   false
    小于 < 1<2     true
    大于等于 >= 1>=2 false
    小于等于 <= 1<=2   true

      逻辑运算符 

       逻辑运算符包括!(非)、&&(与)、||(或),优先级依次降低。用逻辑运算符将关系表达式连起来就是逻辑表达式,逻辑表达式的结果也是bool类型,值也只能是true或false。"!"是一元运算符,使用形式是!操作数。非运算是对操作数取反。比如!a,a的值是true,则!a的值是false。"&&"是二元运算符,用来求两个操作数的逻辑与,只有两个操作数的值都是true,逻辑与的结果才是true,其他情况下结果都是false。"||"也是二元运算符,用来求两个操作数的逻辑或,只有两个操作数的值都是false时,逻辑或的结果才是false,其他情况下结果都是true。比如,int a=3,b=5,c=2,d=1; 则逻辑表达式(a>b)&&(c>d)的值为false。

      sizeof运算符

      sizeof运算符用来计算某个对象在内存中占用的字节数。此运算符的使用形式为:sizeof(类型名)或sizeof(表达式)。计算结果是这个类型或者这个表达式结果在内存中占的字节数。

      三目运算符

      表达是1?表达式2:表达式3其含义表示:

    如果表达式1的值为真,则返回表达式2的值,如果为假,则返回表达式3的值。

    举例

      if(1>2)?1:2;

      结果为2返回表达式3的值。

      位运算符

      按位与(&)。它是对两个操作数的二进制形式的每一位分别进行逻辑与操作。比如3的二进制形式为00000011,5的二进制形式为00000101,按位与后结果是00000001。

          按位或(|)。它对两个操作数的二进制形式的每一位分别进行逻辑或操作。还是比如3和5按位或运算后结果是00000111。

          按位异或(^)。它对两个操作数的每一位进行异或,也就是如果对应位相同则运算结果为0,若对应位不同则计算结果为1。例如3和5按位异或后结果为00000110。

          按位取反(~)。这是一个一元运算符。它对一个二进制数的每一位求反。比如,3按位取反就是11111100。

          移位。包括左移运算(<<)和右移运算(>>),都是二元运算符。移位运算符左边的数是需要移位的数值,右边的数是移动的位数。左移是按指定的位数将一个数的二进制值向左移位,左移后,低位补0,移出的高位舍弃。右移是按照指定的位数将一个数的二进制值向右移位,右移后,移出的低位舍弃,如果是无符号数则高位补0,如果是有符号数,则高位补符号位或0,一般补符号位。比如,char型变量的值是-8,则它在内存中的二进制补码值是11111000,所以a>>2则需要将最右边两个0移出,最左边补两个1,因为符号位是1,则结果为11111110,对其再求补码就得到最终结果-2。

  • 相关阅读:
    技术期刊 · 白日照耀开鸿蒙 | 深入鸿蒙 ACE UI 框架解析;无限循环的 useEffect 类型;用 Three.js 实现 3D 房间;图神经网络入门;超基础的机器学习入门-原理篇
    青岛敏捷之旅,来了!
    痞子衡嵌入式:借助Serial Plot软件测量i.MXRT系列FlexSPI驱动Flash页编程执行时间分布
    痞子衡嵌入式:超级下载算法RT-UFL v1.0在Segger Ozone下的使用
    痞子衡嵌入式:超级下载算法RT-UFL v1.0在Keil MDK下的使用
    痞子衡嵌入式:超级下载算法RT-UFL v1.0在IAR EW for Arm下的使用
    痞子衡嵌入式:超级下载算法RT-UFL v1.0在MCUXpresso IDE下的使用
    《痞子衡嵌入式半月刊》 第 42 期
    痞子衡嵌入式:i.MXRT全系列下FlexSPI外设AHB Master ID定义与AHB RX Buffer指定的异同
    CDP客户数据管理平台体系化搭建
  • 原文地址:https://www.cnblogs.com/delphi2014/p/4009245.html
Copyright © 2011-2022 走看看