avva: (moose)
[personal profile] avva
Цитирую из подзамочной записи с разрешения автора, который работает в американской компании и интервьюирует программистов:
Интесная закономерность выявляется. Мы начинаем интервью с того, что просим кандидата прочитать вот такой код, и сказать, что он делает. Как бы он назвал эту функцию?

private static int ok(int a, int b) {
   while (a >= b) a -= b;
   return a;
}

Пока результаты такие, что после этого вопроса интервью можно заканчивать. Если человек отвечает нормально на этот вопрос, то и дальше отвечает нормально. Если вообще близко не может понять о чем речь, то дальше только хуже.

Date: 2013-05-13 10:01 am (UTC)
From: [identity profile] mopexod.livejournal.com
В кондовом стандартном С нету байтов :(

http://en.wikipedia.org/wiki/C_data_types

Date: 2013-05-13 10:38 am (UTC)
From: [identity profile] vrml.livejournal.com
В качестве байтов всегда использовались char.

Date: 2013-05-13 10:59 am (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Есть. Читайте не википедию, а стандарт ;)

Date: 2013-05-13 11:25 am (UTC)
From: [identity profile] mopexod.livejournal.com
http://flash-gordon.me.uk/ansi.c.txt

Параграф '3.1.2.5 Types' (вообще не упоминает слово byte):
An object declared as type char is large enough to store any member of the basic execution character set.

Параграф '1.6 DEFINITIONS OF TERMS':
Byte --- the unit of data storage in the execution environment large enough to hold any member of the basic character set of the execution environment.

Каждый из них "large enough", но про одинаковость - ни слова.

Date: 2013-05-13 11:27 am (UTC)
From: [identity profile] mopexod.livejournal.com
*** ссылка на стандарт убрана из-за спамоловки ***

Параграф '3.1.2.5 Types' (вообще не упоминает слово byte):
An object declared as type char is large enough to store any member of the basic execution character set.

Параграф '1.6 DEFINITIONS OF TERMS':
Byte --- the unit of data storage in the execution environment large enough to hold any member of the basic character set of the execution environment.

Каждый из них "large enough", но про одинаковость - ни слова.

Date: 2013-05-13 01:09 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Байт ― не тип, а единица памяти, верно. Sizeof возвращает количество этих единиц. Размер типа char в этих единицах ― 1.

Date: 2013-05-13 01:40 pm (UTC)
From: [identity profile] mopexod.livejournal.com
Со всем согласен. Только гарантии на последнее утверждение стандарт не даёт. Хотя имплементаций, где бы это было не так, не видел ни разу, и не помню что читал о таких.

Date: 2013-05-13 01:46 pm (UTC)
From: [identity profile] mopexod.livejournal.com
Начиная со стандарта С99 это установлено. До того, насколько я понимаю, - нет.

Date: 2013-05-13 02:42 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Я не могу сейчас проверить, но мне кажется, это во всех стандартах было, в той или иной формулировке.
UPD: нашел драфт С89, а там

Character --- a single byte representing a member of the basic character
set of either the source or the execution environment.

...

The sizeof operator yields the size (in bytes) of its operand,
which may be an expression or the parenthesized name of a type. The
size is determined from the type of the operand, which is not itself
evaluated. The result is an integer constant.

When applied to an operand that has type char , unsigned char , or
signed char , (or a qualified version thereof) the result is 1.
Edited Date: 2013-05-13 02:50 pm (UTC)

Date: 2013-05-13 03:18 pm (UTC)
From: [identity profile] mopexod.livejournal.com
О, я эту фразу и в стандарте 88 года тоже нашел. Видимо, всегда было. Ошибся :)

June 2025

S M T W T F S
123 4 5 6 7
8 910 11 12 13 14
15 16 17 1819 20 21
22 23 24 25 26 27 28
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 28th, 2025 03:12 pm
Powered by Dreamwidth Studios