Допустим, вы программируете на Си/Си++, и вам необходимо в целочисленном выражении иметь число вида 0xFFFFFFFF. Как это проще всего записать?
Можно воспользоваться конструкцией
(~0)
Это приведёт к тому, что 0 будет приведён к типу выражения (а это -- тип максимального размера в выражении, то есть тип переменной/константы в выражении с максимальным размером), а потом побитово инвертирован, что и даст искомый 0xFFFFFFFF, причём тип выходного числа будет совпадать с типом всего выражения. Это позволяет гибко менять типы переменных не заботясь о том, чтобы подобные константы соответствовали типу выражения.