将布尔值更改为与初始值相反的值
Changing bool values to opposite of the initial value
本文关键字:布尔值 更新时间:2023-10-16
这对你来说可能听起来很奇怪,但我懒得每次都写
if (threadAlive)
{
threadAlive = false;
}
else
{
threadAlive = true;
}
难道没有像 int++ 或 int-- 这样的东西可以将布尔值更改为与其值相反的东西吗?
只需这样做:
threadAlive = !threadAlive;
是的,有!
threadAlive ^= true;
(这是一个C#笑话,在最一般的情况下,它不适用于C/C++/Javascript(它可以在C/C++/Javascript中工作,具体取决于某些条件(,但这是真的! ^
是异或运算符(
这样做:
threadAlive = !threadAlive;
正确的术语是切换
逻辑否定运算符!
是否定其操作数的一元运算符。它是为bool
定义的,当且仅当其操作数为 false
并且false
当且仅当其操作数true
时返回true
threadAlive = !threadAlive;
使用 !
运算符:
bool b = true;
b = !b; // b is now false
如果这是您要查找的,则不能重载基本类型的运算符。
正如其他人已经提到的,这是迄今为止您的最佳选择:
threadAlive = !threadAlive;
但是,尽管我从不推荐,您可以创建自己的bool
类型并重载++
或任何您希望反转值的运算符。
以下代码无论如何都不应该使用:
public class MyBool
{
bool Value;
public MyBool(bool value)
{
this.Value = value;
}
public static MyBool operator ++(MyBool myBoolean)
{
myBoolean.Value = !myBoolean.Value;
return myBoolean;
}
}
您也可以创建自己的扩展方法,但这也不是更好的方法。
很简单:
threadAlive = ! threadAlive;
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 变量定义到C++布尔值转换
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 重载更少,则运算符返回相反的布尔值
- 将此布尔值传递给此函数的最有效方法是什么?
- 如何设置 c++ 类的布尔值?
- 使用 MAKEWORD / MAKEWPARAM 使用布尔值而不是布尔值
- 将 10 个线程与原子布尔值同步
- 创建类似于布尔值的变量类型
- 布尔值向量的基于范围 for 循环
- 零点和布尔值之间的比较
- 简化对两个布尔值的 4 个 if/else 检查
- 无法创建带有布尔值和矢量的地图
- 对于完成布尔值设置为 true 后未停止的循环
- fstream / ifstream / ofstream 对象如何转换为布尔值
- C++:将值赋值给原始数据类型(例如布尔值)是原子操作吗?
- 为什么布尔值不能比作最后一点?
- 如何使用返回布尔值的函数?
- 将uintptr_t转换为布尔值会使 SSO 基准速度减慢数倍
- 布尔值始终评估为真