Part 0:概念

表达式:表达式是由非赋值运算符或特殊运算符和值组成的,每个表达式都可以计算出一个值


Part 1:非赋值运算符

§1.1 基本的运算符

基本的运算符有+,-,*,/,%

我相信你除了%应该能看得懂

%运算是求余数的运算,具体请看:这篇文章的Part 0部分

怎么用呢?举例介绍:

int a=1,b=2;
a+b;//3
a-b;//-2
a*b;//2
a/b;//1/2
b%a;//0

§1.2 关系运算符

关系运算符描述几个量之间的关系,他们是:==,!=,>,<,>=,<=

解释一下:===!=,>=,<=

§1.3 逻辑运算符

逻辑运算符主要用于判断当中,他们包括:&&,||,!

接下来请记住概念:

只要a,b有一个为假,a&&b即为假

只要a,b有一个为真,a||b即为真

如果a为真,则!a为假;如果a为假,!a则为真

请注意!真假在bool类型中只能为1和0,但是对于其他变量,只要不为0即为真

§1.4 位运算符

这些运算符是最难懂的运算符,因为他们针对的是二进制的。他们是:&,|,^,<<,>>,~

若a,b的二进制的同一位上为0,则a&b中,这一位为0

若a,b的二进制的同一位上为1,则a|b中,这一位为1

^和&为互逆的运算

~a表示把a的每一位取反(0改为1,1改为0)

上面的三个运算符会针对一个数的二进制的每一位单独操作,假设a的二进制有4位,则若a参与&运算,&要判断4个位上的数,最后把四次的结果组合为一个新的数字,举个例子:

假设a=1100,b=0011(二进制),求a&b

第1次:a的第一位1和b的第一位0运算:1 & 0 = 0

第2次:a的第一位0和b的第一位1运算:0 & 1 = 0

第3次:a的第一位1和b的第一位0运算:1 & 0 = 0

第4次:a的第一位0和b的第一位1运算:0 & 1 = 0

组合结果,a&b=0000(二进制)

接下来的运算,是针对一个数的二进制进行操作:

a>>b表示,把a的每一位向右移动b次,溢出的数字舍去,空缺的位用0补全

a<<b表示,把a的每一位向左移动b次,溢出的数字舍去,空缺的位用0补全

举个例子:假设a=1111(二进制):


Part 2:赋值运算符

由于非赋值运算符并不会改变值,如果你想a加一,你要写a = a+1

有了赋值运算符,就简单的多了!

除了逻辑运算符,上面谈到的非赋值运算符后缀=即为赋值运算符了:

  • => +=
  • => -=
  • => *=

    / => /=

    % => %=

    & => &=

    | => |=

    ^ => ^=

=> >>=

<< => <<=

~ => ~=


Part 3:特殊运算符

特殊运算符并不是用来计算的,他们包括:sizeof(),&,*,?:

sizeof(a)用来返回变量a所占的字节大小

&,*为指针运算符,此时他们左边没有数值&p来返回一个变量p在计算机内储存的地址,*p返回指针p指向的地址所储存的值

a?x:y中,a是一个表达式,如果表达式为真,则a?x:y的值为x;否则,a?x:y的值为y

D语言-运算符的更多相关文章

  1. C语言运算符和优先级

    关于C语言运算符和优先级,经整理众多博客资料汇入自己的实战,如下:        a.算术运算        C语言一共有34种运算符,包括常见的加减乘除运算.        1) 加法:+ 还可以表 ...

  2. 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等

    [源码下载] 不可或缺 Windows Native (3) - C 语言: 运算符,表达式,条件语句,循环语句,转向语句,空语句等 作者:webabcd 介绍不可或缺 Windows Native  ...

  3. 一道c语言运算符优先级问题

    一道c语言运算符优先级问题 #include <iostream> using namespace std; int main() { char test[] = {"This ...

  4. [转]说说C语言运算符的“优先级”与“结合性”

    补充自己的一点理解: 1.关于++i 与 i++的区别. ++i 和 i++如果是单独使用的语句,即二者后面均加上分号,或者其他单独使用的语句,没有任何区别.例如: for(i=0;i<100; ...

  5. 李洪强-C语言7-C语言运算符

    C语言运算符 一.算术运算 C语言一共有34种运算符,包括常见的加减乘除运算. ①. 加法:+ 还可以表示正号 ②. 减法:- 还可以表示负号 ③. 乘法:* 非数学意义上的X ④. 除法:/  注意 ...

  6. C语言的本质(7)——C语言运算符大全

    C语言的本质(7)--C语言运算符大全 C语言的结合方向 C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左).例如算术运算符的结合性是自左至右,即先左后右.如有表达式 x- ...

  7. C语言运算符优先级总结

    一 写在开头1.1 本文内容本文内容为C语言中运算符优先级的总结.转载于:https://blog.csdn.net/huangblog/article/details/8271791,感谢原作者的付 ...

  8. C语言运算符优先级和ASCII表

    1. C语言运算符优先级及结合性 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成 ...

  9. 说说C语言运算符的“优先级”与“结合性”

    论坛和博客上常常看到关于C语言中运算符的迷惑,甚至是错误的解读.这样的迷惑或解读大都发生在表达式中存在着较为复杂的副作用时.但从本质上看,仍然是概念理解上的偏差.本文试图通过对三个典型表达式的分析,集 ...

  10. C语言运算符优先级及结合性

    今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧.发现一篇讲得不错的文章,编辑了下转来供以后翻阅. C语言运算符优先级表(由上至下,优先级依次递减) 运算符 结合性 () ...

随机推荐

  1. 5.Linux解决Device eth0 does not seem to be present

    Linux操作系统排除故障 导入vixualbox的虚拟机voa文件到另外一台电脑,需要检查如下信息 修改虚拟机软件网络设置 重启Linux操作系统 shutdown -h now reboot se ...

  2. JS在不改变原数组的情况下复制一个新的数组

    var a={1,2,3,4} var data= JSON.parse(JSON.stringify(a[0])) a.push(data) a[4]=5 这样就不会改变原数组a的数据

  3. kali linux终端快捷键设置

    kali里面是没有终端快捷键的,需要自己设置. 打开设置->设备->keyboard,拉到最下面点击加号来新建一个快捷键. 名称:打开终端 命令:gnome-terminal 快捷键:Ct ...

  4. 解析underscore中的throttle

    什么是throttle(节流) Throttling enforces a maximum number of times a function can be called over time. 简单 ...

  5. python三大神器===》生成器

    1. 认识生成器 利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成.但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一 ...

  6. HDU - 3724 Encoded Barcodes (字典树)

    题意:给定n个字符串和m个经过处理得到的字符串,问对于m个字符串中的每个字符串,n个字符串中以该字符串为前缀的个数.分析:1.误差在[0.95x, 1.05x],因此求8个数的平均数,大于平均数为1, ...

  7. C++ 检测物理内存以及磁盘空间

    BOOL CheckResource() { MEMORYSTATUSEX statex; statex.dwLength = sizeof (statex); GlobalMemoryStatusE ...

  8. golang 读取 chrome保存的网站账号信息

    package main import ( "database/sql" "fmt" "log" "os" " ...

  9. 基于云开发开发 Web 应用(三):云开发相关数据调用

    介绍 在完成了 UI 界面的实现后,接下来可以开始进行和云开发相关的数据对接.完成数据对接后,应用基础就打好了,接下来的就是发布上线以及一些小的 feature 的加入. 配置 在进行相关的配置调用的 ...

  10. Win10下用selenium、Image.crop() 截图时、坐标不准确的问题

    截百度按钮的图 先将整个窗口的图保存下来 from selenium import webdriver driver = webdriver.Chrome() driver.get('https:// ...