Подтвердить что ты не робот

Являются ли (bool) (i & 1) и i% 2 == 1 одинаковыми?

Всегда (bool)(i & 1) и i % 2 == 1, где i есть int?

Примечание: всегда говорю, что для всех платформ (даже если байт 16 бит) и для всех стандартов C и С++.

Edit:

Для всех стандартов C и С++, где bool существует.

4b9b3361

Ответ 1

Нет.

1s 'дополнение представления int, представление -1 является 1 ... 10, поэтому они различаются.

Во всяком случае, i % 2 может быть отрицательным для отрицательного i (действительно, он должен быть в C99, когда он не равен 0) и, следовательно, не равен 1 для отрицательных нечетных чисел.

Ответ 2

Нет.

Например, попробуйте, если я равно -1. -1 % 2 == -1, а (bool) (-1 & 1) - 1.

(Предполагая 2-дополнение)