~
- побитовый оператор НЕ. ~i
равно 0 тогда и только тогда, когда i
имеет 1 во всех битах. Имеет ли -1 все биты 1, зависит от того, как числа со знаком представлены в системе. В представлении дополнения до двух -1 представлен со всеми битами 1, поэтому в таких системах ~(-1) == 0
. Ни в дополнении, ни в знаке и величине это не выполняется.
Следовательно, ответ - нет; не на всех системах. Тем не менее, два дополнения довольно распространены в современных машинах (все сделано с 90-х годов), и на таких системах ответ - да. Независимо от представления знака, однако, i != -1
гораздо более читабелен.