-
- Для основной массы населения программирующей мелкоконтроллеры ваш вариант нечитаемый, а в первом всё понятно без вопросов. Индусы, фуле... - военная суровость(24.12.2015 18:49, )
- Но ведь int и uint32_t - две большие разницы. Возможно, требуется именно беззнаковый тип. Или нет? - Bill(23.12.2015 16:27)
- (u)int32_t всегда 32-х битное. int - зависит от платформы - 3m(23.12.2015 17:58)
- Дело не только в разрядности данных. Вопрос еще и в том, какие данные необходимы в данном случае: со знаком или без оного? - Bill(24.12.2015 09:30)
- Зависит от платформы. А платформа - STM32. Вот такой платформонезависимый код :-) - SciFi(23.12.2015 18:24)
- Платформонезависимый код это на яве или лучше яваскрипте и то с ограничениями. - военная суровость(23.12.2015 19:42, )
- Жаба и жабаскрипт на стм32 - безумству храбрых поём мы песню. Формально можно, конечно, но нахуа? Нахуа, Карл? - SciFi(23.12.2015 23:37)
- Это мисра, вы ей можете не следовать от УК РФ не спасёт. - военная суровость(24.12.2015 00:12, )
- Жаба и жабаскрипт на стм32 - безумству храбрых поём мы песню. Формально можно, конечно, но нахуа? Нахуа, Карл? - SciFi(23.12.2015 23:37)
- Платформонезависимый код это на яве или лучше яваскрипте и то с ограничениями. - военная суровость(23.12.2015 19:42, )
- Для чисел от 0 до 15? Любой тип подойдёт. Но int пишется короче и по сути верно: "целое число". Всё остальное - пардон, задротство и ассемблер головного мозга. SciFi(160 знак., 23.12.2015 16:33 - 16:37)
- я не знаю какой длины у вас там в стмах порты, но с константами и типами нужно быть аккуратнее: abivan(508 знак., 24.12.2015 11:15)
- Ви таки утверждаете, что я неаккуратен с константами? Не говорите, что мне делать с моими константами, и я не скажу, что вам следует сделать с вашими. - SciFi(24.12.2015 11:23)
- я говорю, что не нужно учить Била жизни, и предлагать ему почитать кернигана. А кто там с чем неаккуратен пусть решает сам. - abivan(24.12.2015 12:23)
- Ну, так век учись - век живи. По-моему, это неплохое правило. Или нет? - Bill(24.12.2015 13:16)
- я говорю, что не нужно учить Била жизни, и предлагать ему почитать кернигана. А кто там с чем неаккуратен пусть решает сам. - abivan(24.12.2015 12:23)
- Ви таки утверждаете, что я неаккуратен с константами? Не говорите, что мне делать с моими константами, и я не скажу, что вам следует сделать с вашими. - SciFi(24.12.2015 11:23)
- Думаю, что 1 и 0x01 уже разные вещи. Не зная, что размер 0x01 при использовании не предполагается больше 32, компилятору нельзя корректно ругнуться на выход за пределы при pinpos > 31, а так получится получить ворнинг. Ну и размер регистра часто Vit(182 знак., 24.12.2015 04:56)
- Увы, это не так. 1 сама по себе останется единицей, как ее не запиши. Более того, компилятор всегда преобразует константу к внутреннему представлению, как правило, к 32-разрядному. А далее все зависит то того, как именно эта константа будет Bill(30 знак., 24.12.2015 09:39 - 13:13)
- 1 - знаковая. 0х01 всегда беззнаковая, да ещё и от применения может занимать от 8 до 64 бит. 1.0f - тоже единица, но это совсем не то же:) Поговаривают, что во всяких Бейсиках с динамической типизацией бывает иначе, но мы говорим о языке Си и Vit(22 знак., 24.12.2015 15:35)
- знак, без знак это с точки зрения удобочитаемости? abivan(109 знак., 24.12.2015 15:43)
- и не должно ругаться. просто Вам не запрещают беззнаковое присвоить знаковому. а если запишете i= ~(0LL); то получите -1 что при signed char, что при long long:) - Vit(24.12.2015 15:51)
- тогда почему число(константа) в десятичном представлении считается знаковым, а в 16-тиричном нет? Откуда это? abivan(36 знак., 24.12.2015 16:01)
- в десятичном представлении знак минус вписывается явно и ничего другого. только размер по дефолту int, в присваивании переменной меньшего размера само обрежется, а для большего корректно суффиксом обозначать. - Vit(24.12.2015 16:32)
- Минус - это называется "оператор унарный минус", и это вовсе не часть константы. Этот же оператор можно приписать и к шестнадцатеричной константе (как и к числовой переменной, в том числе типа float), нигде это не запрещено. - SciFi(24.12.2015 17:20)
- Я рад за Вас. Но Вас же знаковость и ворнинги не волновали - главное, чтобы написано красиво было - что-то изменилось? - Vit(24.12.2015 17:29)
- Отнюдь, знаковость и ворнинги меня волнуют, но только не в этом случае (см. ссылку), ибо там нет повода для волнения, если написАть красиво. А коли так, должно быть написано красиво, и точка. - SciFi(24.12.2015 17:34, ссылка)
- Я рад за Вас. Но Вас же знаковость и ворнинги не волновали - главное, чтобы написано красиво было - что-то изменилось? - Vit(24.12.2015 17:29)
- почему ничего другого? abivan(126 знак., 24.12.2015 17:09)
- Минус - это называется "оператор унарный минус", и это вовсе не часть константы. Этот же оператор можно приписать и к шестнадцатеричной константе (как и к числовой переменной, в том числе типа float), нигде это не запрещено. - SciFi(24.12.2015 17:20)
- Ниоткуда. Это товарищ Vit заблуждается. К шестнадцатеричным тоже надо приписывать суффикс U. - SciFi(24.12.2015 16:07)
- в десятичном представлении знак минус вписывается явно и ничего другого. только размер по дефолту int, в присваивании переменной меньшего размера само обрежется, а для большего корректно суффиксом обозначать. - Vit(24.12.2015 16:32)
- тогда почему число(константа) в десятичном представлении считается знаковым, а в 16-тиричном нет? Откуда это? abivan(36 знак., 24.12.2015 16:01)
- Вы нас не путайте, мы сами запутаемся --> - SciFi(24.12.2015 15:45, ссылка)
- Я Вас не понимаю, какие-то намеки, нравоучения, снобизм вместо ответов. Если я в чем то не прав так и скажите. Для меня будет польза. - abivan(24.12.2015 15:53)
- Я агитирую за читаемый код без лишних рюшечек. То есть если можно написать "int i = 1;", то так и нужно писать. А не монструозность типа "uint32_t i = (uint32_t)0x01;". Это про код по ссылке --> SciFi(325 знак., 24.12.2015 16:04, ссылка)
- ну хорошо, со снобизмом разобрались, будем считать, что все погорячились( в том числе и я). Но по существу вопроса. abivan(426 знак., 24.12.2015 16:32)
- Си не нужно обсуждать, его нужно знать. Да и не я первый начал. И потом, я просто написал, что int и uint32_t - две большие разницы. А дальше пошло-поехало. - Bill(24.12.2015 16:09 - 16:12)
- Как раз Вы и начали --> SciFi(294 знак., 24.12.2015 16:16, ссылка)
- Я агитирую за читаемый код без лишних рюшечек. То есть если можно написать "int i = 1;", то так и нужно писать. А не монструозность типа "uint32_t i = (uint32_t)0x01;". Это про код по ссылке --> SciFi(325 знак., 24.12.2015 16:04, ссылка)
- Я Вас не понимаю, какие-то намеки, нравоучения, снобизм вместо ответов. Если я в чем то не прав так и скажите. Для меня будет польза. - abivan(24.12.2015 15:53)
- и не должно ругаться. просто Вам не запрещают беззнаковое присвоить знаковому. а если запишете i= ~(0LL); то получите -1 что при signed char, что при long long:) - Vit(24.12.2015 15:51)
- знак, без знак это с точки зрения удобочитаемости? abivan(109 знак., 24.12.2015 15:43)
- Какой ужас... Говорите, студентов пасёте? Мне их так жалко... - SciFi(24.12.2015 09:44)
- Во-первых, что так? А, во-вторых, я их сейчас вообще не пасу. Да и вообще никогда не пас. Кстати, совсем недавно Bill(161 знак., 24.12.2015 10:18)
- 2) Бедные студенты, совсем некуда податься... 1) Вы им только про язык Си и компиляторы ничего не рассказывайте, ладно? Лучше посоветуйте хорошую книгу. K&R, к примеру. Ну и сами почитайте. - SciFi(24.12.2015 10:25 - 10:29)
- Как раз про это я им ничего не рассказываю. Я просто задаю им вопросы. Скажем, что означает выражение Bill(125 знак., 24.12.2015 13:11 - 16:06)
- студенты это ерунда. люди которые в резюме указывают что делали какие-то проекты заваливаются на самом простом! Mahagam(381 знак., 24.12.2015 13:34)
- Ну вообще-то +0 и -0 типовая ситуация для обратного кода. А уточнили ли вы, что речь именно про дополнительный код? Может у вас там вообще знакоразрядная система. - Lightelf(27.12.2015 23:45)
- Блин. Вот эти штуки, типа чё-то там инвертировать и минус (или плюс?) единица... Вот так прям сходу и не вспомнишь, на таком вот собеседовании. Сидит тут перед тобой такой весь страшный... Барбос(101 знак., 27.12.2015 21:34)
- Такие вещи не вспоминать нужно, их нужно просто знать. В свое время нам преподаватель задал вопрос по работе, казалось бы, простейшей схемы. Ответил на него я не сразу. Но как только я нашел этот ответ, я просто понял как именно работает такая Bill(157 знак., 28.12.2015 10:09)
- ну блин. я в самом начале карьеры, как только узнал диапазон для целых задался вопросом - как оно представлено, и почему пределы знаковых чисел несимметричны. разобрался как оно устроено, и почему именно так. это ж основы! - Mahagam(27.12.2015 22:05)
- Вы их проверяете не купили ли они диплом в переходе? военная суровость(28 знак., 24.12.2015 18:44, )
- проверяем есть ли в голове понимание того, с чем человек работает. а то был писатель ГУЯ, который был готов делать индикатор температуры от -300°С Mahagam(233 знак., 24.12.2015 19:49)
- Нууу, такой индикатор неплохо показывает, что в канале датчика глюк возник :-D Хотя, конечно, для выхода за грани возможного есть слово «err!» длиной как раз с «-300». - Николай Коровин(27.12.2015 20:30)
- стрелочный. ага. - Mahagam(27.12.2015 21:07)
- Ну и вот кто теперь меня испаццтола будет поднимать? - Николай Коровин(27.12.2015 21:19)
- стрелочный. ага. - Mahagam(27.12.2015 21:07)
- Может он гуй красиво пишет. Значит так учат теперь у вас. Проверил на гуманитариях среднего школьного возраста они фкурсе, что прибор секретный, ваши учоные могли и не знать. военная суровость(72 знак., 24.12.2015 22:38, )
- да ты шайтан. вах! - SciFi(24.12.2015 22:57)
- Нууу, такой индикатор неплохо показывает, что в канале датчика глюк возник :-D Хотя, конечно, для выхода за грани возможного есть слово «err!» длиной как раз с «-300». - Николай Коровин(27.12.2015 20:30)
- проверяем есть ли в голове понимание того, с чем человек работает. а то был писатель ГУЯ, который был готов делать индикатор температуры от -300°С Mahagam(233 знак., 24.12.2015 19:49)
- Интересно, "Hello World" считается "завершённым проектом"? А вот это "потыкал мышой в куб, оно чота сгенерило, лампочка замигала" - тоже? - SciFi(24.12.2015 13:57)
- Для студентов это будет почти завершенным проектом. Единственно, что еще желательно сделать, добавить некоторые вычисления, скажем, вывести сумму 3-х чисел. А по микроконтроллерам - на уровне лампочек. Я тут было разбежался, сделал модули для Bill(303 знак., 24.12.2015 14:24)
- скажите, вот того кадра (по ссылке) - вы привели? ))) - Mahagam(24.12.2015 15:24, ссылка)
- Не имел чести знать. - Bill(24.12.2015 15:47)
- скажите, вот того кадра (по ссылке) - вы привели? ))) - Mahagam(24.12.2015 15:24, ссылка)
- первый более опытный он как раз по второму варианту проходил - "берём стандартную заготовку...", а второй - вчерашний студент. в принципе во многом видно что сам разобрался. Mahagam(284 знак., 24.12.2015 14:07)
- Для студентов это будет почти завершенным проектом. Единственно, что еще желательно сделать, добавить некоторые вычисления, скажем, вывести сумму 3-х чисел. А по микроконтроллерам - на уровне лампочек. Я тут было разбежался, сделал модули для Bill(303 знак., 24.12.2015 14:24)
- Ну, когда-то эти люди тоже были студентами. И вообще, "то ли еще будет ой-ёй-ёй". - Bill(24.12.2015 13:56)
- студенты это ерунда. люди которые в резюме указывают что делали какие-то проекты заваливаются на самом простом! Mahagam(381 знак., 24.12.2015 13:34)
- Как раз про это я им ничего не рассказываю. Я просто задаю им вопросы. Скажем, что означает выражение Bill(125 знак., 24.12.2015 13:11 - 16:06)
- 2) Бедные студенты, совсем некуда податься... 1) Вы им только про язык Си и компиляторы ничего не рассказывайте, ладно? Лучше посоветуйте хорошую книгу. K&R, к примеру. Ну и сами почитайте. - SciFi(24.12.2015 10:25 - 10:29)
- Во-первых, что так? А, во-вторых, я их сейчас вообще не пасу. Да и вообще никогда не пас. Кстати, совсем недавно Bill(161 знак., 24.12.2015 10:18)
- 1 - знаковая. 0х01 всегда беззнаковая, да ещё и от применения может занимать от 8 до 64 бит. 1.0f - тоже единица, но это совсем не то же:) Поговаривают, что во всяких Бейсиках с динамической типизацией бывает иначе, но мы говорим о языке Си и Vit(22 знак., 24.12.2015 15:35)
- Увы, это не так. 1 сама по себе останется единицей, как ее не запиши. Более того, компилятор всегда преобразует константу к внутреннему представлению, как правило, к 32-разрядному. А далее все зависит то того, как именно эта константа будет Bill(30 знак., 24.12.2015 09:39 - 13:13)
- правильно пишут ((uint32_t)0x01) << pinpos 3m(97 знак., 23.12.2015 17:57)
- Гы, смешно. С какого перепугу он оптимизирует до 1 байта? Хочу всё знать. - SciFi(23.12.2015 18:23)
- Не скажу за ARM, но IAR для 8-бит AVR и MPLAB C18 поступали именно так. Tech2(217 знак., 23.12.2015 18:48)
- По-моему, до нативного он оптимизирует. То есть до 16 или до 32, в зависимости от того, чему равен int неуказанной длины. Но вообще вроде 1L<<n это по-уму пишется, не? - Николай Коровин(23.12.2015 19:17)
- Нет. n<16, поэтому int всегда подойдёт. В крайнем случае 1u, чтобы подавить предупреждение о смене знака. - SciFi(23.12.2015 19:21)
- В смысле «преследуя подразумевавшуюся цель расширить до n>16, пишется 1L<<n», я пытался сказать. Для n<16 оба нативных случая должны подойти. - Николай Коровин(23.12.2015 20:13)
- Нет. n<16, поэтому int всегда подойдёт. В крайнем случае 1u, чтобы подавить предупреждение о смене знака. - SciFi(23.12.2015 19:21)
- Ещё раз: к примеру, 1<<n, где n=15, ЛЮБОЙ компилятор (кроме глючных и убогих) вычислит правильно. А вот это вот "лишь бы не наоптимизировал лишнего" - это от невежества и просто пляски с бубном. - SciFi(23.12.2015 19:02)
- n=0..31 - 3m(23.12.2015 20:47)
- По-моему, до нативного он оптимизирует. То есть до 16 или до 32, в зависимости от того, чему равен int неуказанной длины. Но вообще вроде 1L<<n это по-уму пишется, не? - Николай Коровин(23.12.2015 19:17)
- Не скажу за ARM, но IAR для 8-бит AVR и MPLAB C18 поступали именно так. Tech2(217 знак., 23.12.2015 18:48)
- Гы, смешно. С какого перепугу он оптимизирует до 1 байта? Хочу всё знать. - SciFi(23.12.2015 18:23)
- я не знаю какой длины у вас там в стмах порты, но с константами и типами нужно быть аккуратнее: abivan(508 знак., 24.12.2015 11:15)
- (u)int32_t всегда 32-х битное. int - зависит от платформы - 3m(23.12.2015 17:58)