在 C 中捕获 & 和 && 误用的技巧?
Tricks for catching & and && misuse in C?
由于在 C 语言中错误输入了“&”而不是“&&”,上个月我遇到了一系列错误。
我最近的一个很简单 - 即我写了
value = data && 0x0123
在我中断并看到值是 0 或 1 之后很明显,但我想要一种方法来更早地捕获它,类似于编码
if (1 == END) ...
发现 =
和 ==
的误用。
有什么想法吗?
在 C++ 中,and
和 bitand
分别是 &&
和 &
的替代项(您可以在 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;
}
Live on Coliru
(感谢 Fred Larson 的 std::boolalpha 建议)
C99 在 iso646.h 中将这些定义为宏(感谢 Shafik Yaghmour,more details in one of his answers)
由于在 C 语言中错误输入了“&”而不是“&&”,上个月我遇到了一系列错误。
我最近的一个很简单 - 即我写了
value = data && 0x0123
在我中断并看到值是 0 或 1 之后很明显,但我想要一种方法来更早地捕获它,类似于编码
if (1 == END) ...
发现 =
和 ==
的误用。
有什么想法吗?
在 C++ 中,and
和 bitand
分别是 &&
和 &
的替代项(您可以在 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;
}
Live on Coliru (感谢 Fred Larson 的 std::boolalpha 建议)
C99 在 iso646.h 中将这些定义为宏(感谢 Shafik Yaghmour,more details in one of his answers)