逻辑运算符(且或非),位运算符(异或),函数对象运算(bit_or)

转载:C运算符

一、逻辑运算符

且、或、非

&&  如果两个操作数都非零,则条件为真
||  如果两个操作数中有任意一个非零,则条件为真。
!   非

二、位运算符

与、或、非、异或、取反、左移、右移

|  按位或,按二进制位进行"或"运算。运算规则:(有 1 则为 1)
&  按位与,按二进制位进行"与"运算。运算规则:(有 0 则为 0)
^  异或,相同为0,相异为1
~  按位取反
<< 二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
>> 二进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

1.异或

相同为0,相异为1

0  ^  0  =  0  
    0  ^  1  =  1  
    1  ^  0  =  1  
    1  ^  1  =  0

2.左移右移

左移数据变大,右移数据变小

三、C++中的函数对象运算符

#include <iostream>
#include <functional>

int main()
{
	std::bit_or<int> a;
	auto ret1 = a(2, 5);  // 等价于 auto ret1 = 2|5

	std::logical_and<bool> b;
	auto ret2 = b(false, true); //等价于 auto ret2 = false && true;

	auto ret3 = std::not_fn(ret2); //等价于 auto ret3 = !ret2;

	std::plus<int> c;
	auto ret4 = c(2, 4);  //等价于 auto ret4 = 2 + 4;

	//std::equal_to d;  //可以自动识别类型
	std::equal_to<int> d;
	auto ret5 = d(2, 3); //等价于 auto ret5 = (2 == 3);

	std::ranges::equal_to e;  // C++ 20
	auto ret6 = e(2, 3.3);  //	auto ret6 = (2 == 3.3);
	auto ret7 = e(2, 'b');  //	auto ret7 = (2 == 'b');

	return 0;
}

中文标准库中的函数对象

四、c++17之std::byte

bitset,bitmap,byte

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值