- 1
https://foxford.ru/wiki/informatika/tipy-tselyh-chisel-yazyka-s
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−16
https://foxford.ru/wiki/informatika/tipy-tselyh-chisel-yazyka-s
Вот такая хуйня получается, когда учебные материалы по Си пишут те, которые сами нихуя не знают Си и не читали Священный Драфт Стандарта. Сколько хуйни по ссылке вы можете найти?
spoiler: https://habrahabr.ru/post/156593/
>Ключевые слова signed и unsigned указывают, как интерпретируется нулевой бит объявляемой переменной: если указано unsigned, то нулевой бит интерпретируется как часть числа, в противном случае нулевой бит интерпретируется как знаковый.
В случае с char это не так. char без указания signed и unsigned может быть как знаковым, так и беззнаковым
> Для 16-битовых ЭВМ размер слова равен 2-м байтам, на 32-битных соответственно 4-м байтам
Поскольку байты не всегда 8-битные, это утверждение является хуйней
стандарт, емнип, вообще не определяет, как должна быть реализована знаковость чисел
6.2.6.2 Integer types
http://port70.net/~nsz/c/c11/n1570.html#note49
49) A positional representation for integers that uses the binary digits 0 and 1, in which the values represented by successive bits are additive, begin with 1, and are multiplied by successive integral powers of 2, except perhaps the bit with the highest position. (Adapted from the American National Dictionary for Information Processing Systems.) A byte contains CHAR_BIT bits, and the values of type unsigned char range from 0 to 2CHAR_BIT - 1.
Иными словами, только bit with the highest position может иметь какой-то особый смысл
Как в том анекдоте: https://i.reddituploads.com/83589070b986499b8b2fe13609740f0a?fit=max &h=1536&w=1536&s=0300b655a11682a0dad8450 a4c68a207
Но кастанув signed в unsigned и сдвинув вправо на 31 бит, у тебя в первом бите будет знаковый бит, разве нет? Тогда какая разница?