D语言-运算符
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
最新文章
- eclipse遇到不会部署的情况
- ACM/ICPC 之 网络流入门-Ford Fulkerson与SAP算法(POJ1149-POJ1273)
- IOS 加载Xib 后 如何 动态修改xib中的控件frame
- Monkey学习(1)环境搭建
- [LeetCode] #167# Two Sum II : 数组/二分查找/双指针
- HTTP - Session 机制
- UVa 10465 Homer Simpson (枚举)
- ios专题 - CocoaPods - 安装
- linux目录权限小记
- Angulajs 表单的ng-model绑定
- RACSignal的Subscription深入
- 关于log4.net 错误,求解
- 浅谈对ST表的一些理解
- Android样式(style)和主题(theme)
- Chipmunk僵尸物理对象的出现和解决(一)
- Redis5.0+哨兵模式+Keepalived实现高可用
- mssql 系统函数-字符串函数专题--字符串函数大全
- P3146 [USACO16OPEN]248 &; P3147 [USACO16OPEN]262144
- centos实现两种秒级任务的简单方法
- Java按键事件KeyEvent