Они оба действительные объявления, да, поскольку нет синтаксической ошибки.
Однако, если вы хотите получить дополнение 0
(все биты инвертированы)Вы должны использовать:
unsigned int zero = 0;
unsigned int compzero = ~zero;
С (например) 32-битными unsigned int
, 0xffff
и ~0
соответственно:
0000 0000 0000 0000 1111 1111 1111 1111
1111 1111 1111 1111 1111 1111 1111 1111