在C中捕获&和&&滥用的技巧?

Lar*_*y_C 1 c c++ binary mask

由于在C中输入"&"而不是"&&",我在上个月遇到了一系列错误.

我最近的一个很简单 - 就是我写的

value = data && 0x0123
Run Code Online (Sandbox Code Playgroud)

在我休息后看到该值为0或1时显而易见,但我想要一种方法来捕捉它,类似于编码

if (1 == END) ... 
Run Code Online (Sandbox Code Playgroud)

抓住误用===.

有任何想法吗?

Bor*_*der 8

在C++,andbitand有替代品&&,并&分别(你可以找到所有的替代cppreference).

#include <iostream>

int main()
{
    std::cout << std::boolalpha << (42 and 0x0123) << std::endl;
    std::cout << std::boolalpha << (42 bitand 0x0123) << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

住在Coliru (感谢Fred Larson的std :: boolalpha建议)

C99在iso646.h中将这些定义为宏(Credit转到Shafik Yaghmour,在他的一个答案中有更多细节)

  • 由于问题也标记为C,您还应该解释需要[iso646.h](http://stackoverflow.com/a/18186331/1708801).请注意,我不是downvoter. (2认同)