?

Log in

No account? Create an account
По делам сюда приплыл, а не за этим [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

знаковый или беззнаковый? [фев. 22, 2018|12:50 pm]
Anatoly Vorobey
[Tags|]

(эта запись может быть интересна программистам, знающим C/C++)

Во внутреннем форуме на работе кто-то устроил опрос, который просто не могу не украсть:

Опрос #2078582 unsigned short

"foo" is an "unsigned short". Is the expression "foo + foo" signed or unsigned?

signed
36(17.2%)
unsigned
126(60.3%)
implementation defined
47(22.5%)


Не смотрите в комментарии перед голосованием, там можно обсуждать правильный ответ.
СсылкаОтветить

Comments:
From: winpooh
2018-02-22 07:15 pm
Отправьте уже кого-нибудь на машине времени в начало 70-х, пусть убедит авторов Си завести нормальный набор типов: int8_t, uint32_t и т.д.
(Ответить) (Thread)
[User Picture]From: vladimir000
2018-02-22 07:35 pm
Небось и кодировку сразу utf? :)
(Ответить) (Parent) (Thread)
From: winpooh
2018-02-22 07:50 pm
И синтаксис указателей на функцию чуть менее марсианский.
(Ответить) (Parent) (Thread)
[User Picture]From: vladimir000
2018-02-22 08:26 pm
Меня в это смысле больше typedef-овский синтаксис из себя выводил. Хотя Вы правы - я-то его именно в связке с указателями на функции использовал, сами по себе они еще были читаемы, а вот совместно...
(Ответить) (Parent) (Thread)
[User Picture]From: Oļeg Giŗko [infoserver.lv]
2018-02-23 01:41 am
Деннс Ритчи не внемлет. У него была цель сделать не продвынутый высокоуровневый язык, а язык, который был бы как можно более похож на язык B, чтобы легче было перенести все уже написанные к тому времени программы с PDP-7 на PDP-11.

В PDP-7 мнинмальной адресуемой ячейкой памяти было 18-битное слово, поэтому в языке B был ровно один тип: слово. Появление других типов (и типизированных указателей) в языке C было вынужденной мерой: на PDP-11 мнмнмальной адресуемой ячейкой был 8-битный байт, что было маловато для хранение целого числа и адреса (которые были 16-битными). Так что пришлось вводить типы char и int (и указатели на них).

Да, а целью разработки языка B было вместить компилятор в 4 килослова памяти PDP-7 (9 килобайт в привычных нам единицах).

Edited at 2018-02-23 01:42 (UTC)
(Ответить) (Parent) (Thread)
[User Picture]From: berezovsky
2018-02-23 05:48 am
ты классный
(Ответить) (Parent) (Thread)
From: bopstr
2018-02-24 02:15 am
Как раз вот сегодня набрёл на следы работы сотрудника, который два года назад менял long на int32_t. В результате пострадало несколько комментариев и одно сообщение об ошибке:

"The string is too int32_t."

// Keep walking as int32_t as the start of the string matches the query

Edited at 2018-02-24 02:16 (UTC)
(Ответить) (Parent) (Thread)
[User Picture]From: archaicos
2018-02-24 08:19 pm
Переименование unsigned short в uint16_t проблему из опроса не решит. Нужны новые правила.
(Ответить) (Parent) (Thread)