Являются ли (bool) (i & 1) и i% 2 == 1 одинаковыми?
Всегда (bool)(i & 1) и i % 2 == 1, где i есть int?
Примечание: всегда говорю, что для всех платформ (даже если байт 16 бит) и для всех стандартов C и С++.
Edit:
Для всех стандартов C и С++, где bool существует.
Ответ 1
Нет.
1s 'дополнение представления int, представление -1 является 1 ... 10, поэтому они различаются.
Во всяком случае, i % 2 может быть отрицательным для отрицательного i (действительно, он должен быть в C99, когда он не равен 0) и, следовательно, не равен 1 для отрицательных нечетных чисел.
Ответ 2
Нет.
Например, попробуйте, если я равно -1. -1 % 2 == -1, а (bool) (-1 & 1) - 1.