乐易论坛-乐易网易语言培训教程火山PC视窗中文编程交流论坛

 找回密码
 立即注册

手机号登录

用手机号号登陆

微信登录

微信扫码,快速开始

QQ登录

用QQ账号登陆

办理VIP,定制软件,报名培训联系QQ[重磅]2024年实地培训高清培训目录火山PC版乐易模块使用教程
有了火山,易语言是否还有必要学习吗?易语言0基础入门课程火山PC视窗0基础入门课程
乐易论坛官方QQ群一览表易语言外挂0基础入门课程火山PC视窗火山HOOK入门课程
易语言误报处理课程QQ空间POST课程2022年火山PC易语言POST系列课程
Android逆向Jeb动态调试0基础课程QQ邮箱网页POST课程WeChat个微Hook实战课程
百日Js加密分析实战课程(无密下载)QQ群POST课程h5游戏WebSocket逆向视频
JavaScript加密特训课程易语言汇编快速入门课程破解实战系列课程
手游模拟器脚本0基础课程易语言加密防破解0基础入门课程广告位招租联系QQ1615457736
查看: 6314|回复: 1

C和C++运算符

[复制链接]

C和C++运算符

[复制链接]
已绑定手机
已实名认证
揰掵佲
等级头衔

等級:乐易运营组

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分成就
易币
贡献
主题
精华
金钱
积分
33732
注册时间
2014-8-2
最后登录
1970-1-1

勋章墙

2017-3-14 15:25:04 | 显示全部楼层 |阅读模式

据统计90%查看本帖的人,都已经注册本站了哦

您需要 登录 才可以下载或查看,没有账号?立即注册

×
C和C++运算符
以下是C++程式语言中的所有运算子的优先级和结合性列表。
优先级运算子叙述示例重载性结合性
1::作用域解析(C++专有)Class::age = 2;由左至右
2++后缀递增i++
--后缀递减i--
{}组合{i++;a*=i;}
()函数调用或变量初始化c_tor(int x, int y) : _x(x), _y(y * 10) {}
[]数组访问array[4] = 2;
.以对象方式访问成员obj.age = 34;
->以指针方式访问成员ptr->age = 34;
dynamic_cast运行时检查类型转换(C++专有)Y& y = dynamic_cast<Y&>(x);
static_cast未经检查的类型转换(C++专有)Y& y = static_cast<Y&>(x);
reinterpret_cast重定义类型转换(C++专有)int const* p = reinterpret_cast<int const*>(0x1234);
const_cast更改非常量属性(C++专有)int* q = const_cast<int*>(p);
typeid获取类型信息(C++专有)std::type_info const& t = typeid(x);
3++前缀递增++i 由右至左
--前缀递减--i
+一元正号int i = +1;
-一元负号int i = -1;
!
not
逻辑非
!的备用拼写
if (!done) …
~
compl
按位取反
~的备用拼写
flag1 = ~flag2;
(type)强制类型转换int i = (int)floatNum;
*引用int data = *intPtr;
&取某某的地址(参考)int *intPtr = &data;
sizeof某某的大小size_t s = sizeof(int);
new动态内存分配(C++专有)long* pVar = new long;
new[]动态数组内存分配(C++专有)long* array = new long[20];
delete动态内存释放(C++专有)delete pVar;
delete[]动态数组内存释放(C++专有)delete [] array;
4.*成员对象选择(C++专有)obj.*var = 24;由左至右
->*成员指针选择(C++专有)ptr->*var = 24;
5*乘法int i = 2 * 4;
/除法float f = 10.0 / 3.0;
%模数(取余)int rem = 4 % 3;
6+加法int i = 2 + 3;
-减法int i = 5 - 1;
7<<位元左移int flags = 33 << 1;
>>位元右移int flags = 33 >> 1;
8<小于关系if (i < 42) …
<=小于等于关系if (i <= 42) ...
>大于关系if (i > 42) …
>=大于等于关系if (i >= 42) ...
9==
eq
等于关系
==的备用拼写
if (i == 42) ...
!=
not_eq
不等于关系
!=的备用拼写
if (i != 42) …
10&
bitand
位元 AND
&的备用拼写
flag1 = flag2 & 42;
11^
xor
位元 XOR(独占or)
^的备用拼写
flag1 = flag2 ^ 42;
12|
bitor
位元 OR(包含or)
|的备用拼写
flag1 = flag2 | 42;
13&&
and
逻辑 AND
&&的备用拼写
if (conditionA && conditionB) …
14||
or
逻辑 OR
||的备用拼写
if (conditionA || conditionB) ...
15c?t:f三元条件运算int i = a > b ? a : b;由右至左
16=直接赋值int a = b;
+=以和赋值a += 3;
-=以差赋值b -= 4;
*=以乘赋值a *= 5;
/=以除赋值a /= 2;
%=以取余数赋值a %= 3;
<<=以位元左移赋值flags <<= 2;
>>=以位元右移赋值flags >>= 2;
&=
and_eq
以位元AND赋值
&=的备用拼写
flags &= new_flags;
^=
xor_eq
以位元XOR赋值
^=的备用拼写
flags ^= new_flags;
|=
or_eq
以位元OR赋值
|=的备用拼写
flags |= new_flags;
17throw抛出异常throw EClass(“Message”);
18,循环评估运算for (i = 0, j = 0; i < 10; i++, j++) … 由左至右
1. 算术运算符及算术表达式:
c++中的算术运算符有:+(取正或加),-(取负或减),*(乘),/(除),%(取余),++(增1),
--(减1)。其中+(取正),-(取负),++(增1),--(减1)是单目运算符,其余是双目运算符。
+,-,*,/ 运算符与其在数学中的意义,优先级,结合性基本相同。但必须注意“/”运算符,当它的两个操作数都是整数时,其计算结果也是整型,结果为两整数相除后的商。例,3/2的结果是1,3/5的结果是0.
运算符“%”是取余运算,结果为两个整数相除后的余数。例如,5%3的结果是2,6%2结果是0.
注意:要求取余运算符“%”的两个操作数必须是整型或字符型数据。
增1,减1运算是将变量的值增1或减1.这两个运算符都有前置和后置两种形式。前置形式是先计算操作数的值(增1或减1),然后把操作数的值作为表达式的结果。而后置形式是先将操作数的值作为表达式的结果,然后将操作数的值(增1或减1)。
2. 关系运算符及关系表达式:
关系运算是比较两个操作数的大小。当两个操作数满足关系运算符指定的关系时,表达式的值为true,否则为false。
在c++中,关系运算符都是双目运算符,共有6个:<(小于)<=(小于等于)>(大于)>=(大于等于)==(等于)!=(不等于)。其中前4种和后2种属于不同的优先级,前4种的优先级高于后2种。
由关系运算符和操作运算符组成的表达式为关系表达式,关系表达式的结果为布尔类型。
3. 逻辑运算符及逻辑表达式:
逻辑运算符共有3个:1个单目运算符“!”,2个双目运算符“&&”(逻辑与)和“||”(逻辑或)。其中逻辑与的优先级比逻辑或高。
逻辑运算的结果是逻辑值。参与逻辑运算的操作数可以是任一基本类型的数据,在进行判断时,系统将非零值作为真,零为假。
对于单目运算符“!”(逻辑求反),若其操作数为false(0),运算结果为true(1),否则为false(0)。例如,!5的结果为0.
对于“&&”(逻辑与)运算符,只要两个操作数中有一个为false(0),运算结果就为false(0),否则true(1).例如,2&&5的结果为1.
对于“||”(逻辑或)运算符,只要两个操作数中有一个为true(1),运算结果就为true(1),否则为false(0)。例如,5||0的结果为1.
由逻辑预算副和操作数构成的表达式为逻辑表达式,逻辑表达式的结果为布尔类型。
注意:当多个“||”(逻辑或)运算符,只要两个操作数中有一个为true(1),运算结果就为true(1),否则则为false(0),停止后续计算,例如:a=0,b=2,c=3;表达式a++||b++||c++运算后,整个表达式值为true(1),a的值为1,b的值为2,c的值为3.
4. 赋值运算符和赋值表达式:
c++中的赋值运算符分两种:简单赋值运算和复合赋值运算符。赋值运算符都是二元运算符,右结合。由赋值运算符和操作数组成的表达式称为赋值表达式。
(1)简单赋值运算符
c++中的简单赋值运算符为“=”。其表达式的一般形式为:
变量=表达式
该表达式执行时,先计算赋值运算符右部“表达式”的值,然后将它赋给左边的变量。赋值表达式的值为左边变量的值,其类型为左边变量的类型。
(2) 复合赋值运算符:
复合赋值运算符由一个基本赋值运算符和其他一些运算符复合构成,共有10个,分别为:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=.
如果以“op”表示某种运算符,则复合赋值表达式的一般形式为:
变量op=表达式
等价于:
变量=变量op表达式
即先用左部变量和右部表达式作数值运算,然后将运算结果送给左部变量。例如:
a+=3 等价于 a=a+3
使用复合赋值运算符不仅书写简练,而且经过编译以后生成的代码少。
5. 位运算符:
c++提供了6个位运算符:~(按位求反),&(按位与),|(按位或),^(按位异或),<<(左移位),>>(右移位),其中按位求反是单目运算符,其余都是双目运算符。
位运算符是对其操作数按二进制形式逐位进行运算,参与运算的操作数都应为整型数,不能是实型数。
(1)~(按位求反):其作用是对一个二进制数的每一位求反,即0→1,1→0.
(2)&(按位求反):其作用是对两个操作数对应的每一位分别进行逻辑与操作。两操作数对应位都是1,则该位运算结果为1,否则该位运算结果为0.
(3)|(按位或):其作用是对两个操作数对应的每一位非别进行逻辑或操作。两操作数对应位中有1位是1,则该位运算结果为1,否则该位运算结果为0.
(4)^(按位异或):其作用是对两个操作数对应的每一位分别进行逻辑异或操作。两操作数对应位的值不同,则该位运算结果为1,否则该位运算结果为0.
(5)>>(右移位):将左操作数的各二进制位右移,右移位数由右操作数给出。右移1位相当于将操作数除以2。例如,表达式8<<1的结果为4.
(6)<<(左移位):将左操作数的各二进制位左移,左移位数由右操作数给出。左移1位相当于将操作数乘以2.例如,表达式2<<1的结果为4.
注意:移位运算的结果就是位运算表达式的值,参与运算的两个操作数的值并没有发生变化。
6. 条件运算符:
条件运算符“?:”是c++中位移的一个三目运算符,其使用的一般形式为:
表达式?表达式2:表达式3
该表达式执行时,先计算表达式1,若其值为真,则表达式2的值为条件表达式的值;否则表达式3的值为条件表达式的值。条件运算符的优先级低于算术运算符,关系运算符和逻辑运算符,高于赋值运算符,结合性“从右到左”。
7.逗号运算符:
由逗号运算符构成的表达式称为逗号表达式,其一般形式为:
表达式1,表达式2。。。,表达式n
逗号表达式的执行规则是从左到右逐个表达式执行,最后一个表达式的值是该逗号表达式的值。
注意:逗号运算符的优先级最低。








回复

使用道具 举报

已绑定手机
已实名认证
有妖气
等级头衔

等級:顶级Vip

Rank: 14Rank: 14Rank: 14Rank: 14

积分成就
易币
贡献
主题
精华
金钱
积分
696
注册时间
2014-11-22
最后登录
1970-1-1

勋章墙

2017-3-16 09:07:31 | 显示全部楼层
这让我想起来了大学时死记硬背这些玩意
回复

使用道具 举报

如果懒得打字,请选择右侧内容快捷回复 提醒:以任何方式进行『恶意灌水』的行为,进行封号处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

热点推荐上一条 /5 下一条

QQ|网站地图|手机版|小黑屋|乐易论坛-乐易网 | 湘ICP备19007035号

拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表乐易立场!

娄底市乐易网络科技有限公司声明:乐易原创培训课程版权均为我公司所有,未经许可,不得擅自翻录,盗版,破解本站课课程,我们将保留法律诉讼的权利

GMT+8, 2024-4-28 03:41 , Processed in 0.064135 second(s), 39 queries .

Powered by Discuz! X3.4

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表