avva: (Default)
[personal profile] avva
(интересно будет только программистам и сочувствующим, знающим язык C)

Интервьюировал кандидата, который в своем коде на C все время писал так:

for (unsigned i = 0; i < ...


Забавно. Вполне нормальный C, конечно, но в последний раз я видел код, который использовал unsigned, а не unsigned int, где-то в середине 90-х, наверное. Веет от этого кода чем-то старинно-олдскулным.
Page 1 of 5 << [1] [2] [3] [4] [5] >>

Date: 2011-05-24 01:40 pm (UTC)
From: [identity profile] leonidph1972.livejournal.com
Кандидат был старый ?

Date: 2011-05-24 01:40 pm (UTC)
From: [identity profile] larubin.livejournal.com
Не, серединой 90-х от C с декларацией внутри for веять не может :)

Date: 2011-05-24 01:43 pm (UTC)
From: [identity profile] leonidph1972.livejournal.com
кстати да !!!
годы плюсов дают о себе знать! )))
Скорее он просто забыл int :-)

Date: 2011-05-24 01:46 pm (UTC)
From: [identity profile] avva.livejournal.com
Интересно, а ведь вы правы. Ну он не только в циклах так писал, у него вообще все переменные были unsigned без int. И вместе с тем везде, где уместно - объявлялись как const. Странное сочетание.

const unsigned foo = ...
const unsigned bar = ...
for (unsigned baz = ...

Date: 2011-05-24 01:47 pm (UTC)
From: [identity profile] avva.livejournal.com
Нет.

Date: 2011-05-24 01:47 pm (UTC)
From: [identity profile] getman.livejournal.com
Угу, и у меня рука к делиту потянулась.

чуть в сторону

Date: 2011-05-24 01:51 pm (UTC)
From: [identity profile] fyysik.livejournal.com
хех, если подумать, то в общем заботиться об экономии или еще о чем, например, эксплицитно употребляя short, int, int32, int64, long - это вообще 40-ми годами попахивает:)

Date: 2011-05-24 01:52 pm (UTC)
From: [identity profile] trurle.livejournal.com
Если константа или иная переменная foo объявлена как unsigned, переменной цикла тоже стоит быть unsigned, иначе некоторые компиляторы будут выражать недовольство разной степени.
const unsigned int foo = 5;

for (unsigned int i = 0; i < foo; i++


А писать unsigned без указания целого типа законно, но недушеполезно.

Date: 2011-05-24 01:53 pm (UTC)
From: [identity profile] tandem-bike.livejournal.com
дряхлый какой-то кандидат. я именно в 90х на с пислал, никаких таких не видела вариабл дефинишнз... а потом и всякие глобалз пропали... и функции - в матлабе проще весь код слить в один файл и не заморачиваться..

Date: 2011-05-24 01:53 pm (UTC)
From: [identity profile] qehgt.livejournal.com
Так "unsigned int" - же длиннее. Зачем так писать?

ps: да, я "unsigned" использую, и я точно не один такой в отделе был.

Date: 2011-05-24 01:55 pm (UTC)
From: [identity profile] vyhuhol.livejournal.com
Я щитаю, этот кандидат будет гореть примерно в той же части ада, как те, которые объявляют функции
static func(void);

Date: 2011-05-24 02:00 pm (UTC)
From: [identity profile] b-a-t.livejournal.com
Это все от лени! Нет, чтоб добавить нужный хедер и писать uint16 или uint32! :)

Date: 2011-05-24 02:00 pm (UTC)
From: [identity profile] zhengxi.livejournal.com
это в с++ не скомпилится, только в с

Date: 2011-05-24 02:05 pm (UTC)
From: [identity profile] blacklion.livejournal.com
Эмм... Я бы сказал, что кроме особого обоснования, уже довольно давно надо использовать типы с чётким указанием знаковости и битности (те, что из inttypes.h, [u]int<bits>_t).
Причём использование знаковых типов тоже надо обосновывать, а то переполнение знаковой арифметики — undefined behavior.

Date: 2011-05-24 02:06 pm (UTC)
From: [identity profile] qehgt.livejournal.com
Этот "хедер" (с объявлениями uint16/uint32) на разных платформах - разный. А объявление "unsigned i" работает везде.

Date: 2011-05-24 02:29 pm (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
имхо. из двух зол "безнаковые числа по умолчанию" и "знаковые числа по умолчанию" лучше второе. Жить с unsigned по умолчанию ИМХО невозможно, слишком часто в (b-a) b неожиданно меньше a. Если пытаться везде использовать unsigned только для "штук" и int по умолчанию используя зравый смысл, то слишком часто надо их стыковать и гасить warning-и компилятора. С другой стороны, библиотека уже активно использует unsigned size_t для штук, я его в int чаще всего кастую (на текущем месте работы в разработке игр это можно, на следующем в крупной информационной компании уже будет нельзя).

Date: 2011-05-24 02:29 pm (UTC)
From: [identity profile] smalgin.livejournal.com
var x.... :)
From: [identity profile] zhengxi.livejournal.com
в гугле почему-то любят именно int
proof: http://code.google.com/p/re2/source/browse/re2/stringpiece.h#135

Date: 2011-05-24 02:31 pm (UTC)
From: [identity profile] blacklion.livejournal.com
"знаковые числа по умолчанию"
Только надо не обижаться помле на компилятор когда он всякие проверки будет выбрасывать при оптимизации нужные тогда. И потом не удивляться — я вроде проверял размер буфера, а переполнилось!

Date: 2011-05-24 02:36 pm (UTC)
From: [identity profile] zhengxi.livejournal.com
auto x, и никто не назовет старым пердуном :)

Date: 2011-05-24 02:40 pm (UTC)
From: [identity profile] lazyreader.livejournal.com
Тогда не получится unsigned. Для unsigned надо будет писать

for ( auto i = 0U; i < ...

Date: 2011-05-24 02:43 pm (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
Кстати да, размер буфера я часто проверяю как (unsigned)i < 16

Date: 2011-05-24 02:44 pm (UTC)
From: [identity profile] norian.livejournal.com
может учил язык по особо извращённой книжге ..

Date: 2011-05-24 02:45 pm (UTC)

Date: 2011-05-24 03:00 pm (UTC)
From: [identity profile] zigmar.livejournal.com
Мне голый "unsigned" очень режет глаз, а "long" почему-то нет, даже сам иногда использую.
Page 1 of 5 << [1] [2] [3] [4] [5] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 30th, 2025 06:18 am
Powered by Dreamwidth Studios