Булево сравнение разыменованных int * и int, терпящих неудачу в C - PullRequest
0 голосов
/ 21 февраля 2011

Я пишу программу на C на Debian Linux x64. В части кода у меня есть следующее утверждение if:

if (*all_drops >= (npes * 128)) {
            break;
}

all_drops - это int*, которому присвоено значение памяти int, а npes - это int со значением 2. Следовательно, оператор if должен быть истинным, когда значение в all_drops - не менее 256. Однако у меня была переменная выше 1000 без оператора if, оценивающего true.

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

1 Ответ

0 голосов
/ 21 февраля 2011

Это работает как задумано: http://ideone.com/DjHGI

Я думаю, проблема может быть в том, как вы инициализируете *all_drops

...