繁体   English   中英

C++,设置布尔为假,返回旧

[英]C++, set bool to false, return old

这段代码:

bool b = isTrue;
isTrue = false;

将旧isTrue值保存到b ,然后将isTrue设置为false 一切都很好,但是有没有办法在一行中执行此操作? 最后我想实现这一点:

bool b = isTrue ? /* assign true and flip `isTrue` value to false */ : false;

std::exchange可用于执行此操作:

bool b = std::exchange(isTrue, !isTrue);

它相当于:

bool b = (isTrue := !isTrue)

其中:=是一个神奇的赋值运算符,它返回旧值而不是新分配的值。


如果您希望b具有isTrue的旧值isTrue设置为false ,正如评论中的讨论所建议的那样,您可以这样做:

bool b = std::exchange(isTrue, false);

这将是

#include <iostream>

int main()
{

    bool t = !false;
    bool b = false;
//  b = t, t = !t; 
    t = !(b = t); 
    std::cout << std::boolalpha << "b : " << b << " , " << "t : " << t << " . " << "give me a bottle of rum!" << std::endl;
    return 0;
}

评论的行也有效

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM