Предположим, у меня есть структура byte
, например:
struct one_byte
{
char b1 : 1,
b2 : 1,
b3 : 1,
b4 : 1,
b5 : 1,
b6 : 1,
b7 : 1,
b8 : 1;
}foo;
В некоторых случаях мне нужно проверить (foo == 0)
, тогда мне нужно будет выполнить восемь команд:
if(foo.b1 == 0 &&
foo.b2 == 0 &&
foo.b3 == 0 &&
...and so on
Есть ли какой-нибудь портативный и удобный способ, который может мгновенно проверить нулевое значение только с помощью одной команды? Я пробовал функции и шаблоны, они работают очень медленно. И я попробовал union, мой компилятор не поддерживает bit [array] ....
std::bitset
. Однако функция не должна иметь (заметной) разницы по всем 8 операторам без вызова. - person chris   schedule 11.02.2013#define IS_ZERO(var) if(var.b1==0 && var.b2 == 0...)
- person gerrytan   schedule 11.02.2013std::bitset
выполняется медленно (проверено). - person   schedule 11.02.2013memcmp
на все нули? - person Patashu   schedule 11.02.2013memcmp
- person borisbn   schedule 11.02.2013