2012-05-01 6 views
0

Я пишу программу MPI, в которой ранг 0 считывает параметры из файла и транслирует параметры на всех других рангах с помощью MPI_BCAST.Валидация длинного длинного Int в C ведет себя необычно

Я пытаюсь проверить, получены ли длинные длинные целые числа не равными нулю или нет в C, хотя я могу проверить, не являются ли переменные ненулевыми, но я не могу проверить обратное. (Я инициализировал переменные до нуля). Я проверил, что вещание работает правильно, но пока я не могу подтвердить

if ((min_length==0LL) || (max_length==0LL) || (stride_length==0LL) || (nflops == 0LL)) 

В то время как я могу проверить его обратное т.е.

if ((min_length!=0LL) || (max_length!=0LL) || (stride_length!=0LL) || (nflops != 0LL)) 

Просто, чтобы убрать вещи, ни одно из значений не равны нулю , если любое полученное значение равно нулю, моя программа должна завершиться.

Заранее спасибо.

+3

Вы намерены проверить, ** ** все из них отличны от нуля, или если ** любой * * из них отличны от нуля? –

+0

Я пытаюсь проверить, нет ли какого-либо из них. – veepsk

ответ

2

Использование де Морган вы хотите, чтобы инвертировать/отрицать ваше состояние

if (min_length!=0LL && max_length!=0LL && stride_length!=0LL && nflops != 0LL) { 
} 

http://en.wikipedia.org/wiki/De_Morgan%27s_laws