|
|
 |
Ответов
|
Feb 24 2007, 11:31
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Alex11 @ Feb 24 2007, 01:26)  А то, что он догадывается за программиста что требуется, это, скорее, баг компилятора, чем фича. Он не догадывается. Он скорее следует стандарту, где сказано что-то вроде такого: типы, меньшие int на время арифметических операций приводятся к int. Хотя зачем это придумали - для меня загадка.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Feb 24 2007, 20:45
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(Сергей Борщ @ Feb 24 2007, 12:31)  Цитата(Alex11 @ Feb 24 2007, 01:26)  А то, что он догадывается за программиста что требуется, это, скорее, баг компилятора, чем фича.
Он не догадывается. Он скорее следует стандарту, где сказано что-то вроде такого: типы, меньшие int на время арифметических операций приводятся к int. Хотя зачем это придумали - для меня загадка. Не знаю зачем. Возможно для меня.  Практически всё написанное в последнем проекте не требывало уточнений. Лишь в одном месте где по операции с несколькими указателями надо было получить данные расположенные во флэш - пришлось явно указывать. Вообще, в этом смысле Си мне очень понравился. Практически никаких ограничений. А я уже вполне взрослый чтобы понимать что пишу. Например в паскале не пролез бы оператор i = c + '0'; или i = c-'A'; а он очень нагляден и смысл его очевиден. То же и с указателями. Так например я ввожу данные побайтно, а потом интерпретирую их как структуры. Конечно в паскале есть нетипизированные указатели, но работать с ними сложнее. Ну и т.д. и т.п.
|
|
|
|
|
Feb 24 2007, 21:39
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(SasaVitebsk @ Feb 24 2007, 19:45)  А я уже вполне взрослый чтобы понимать что пишу.  Ну если бы размер int, long, char(!) был зафиксирован, тогда с этим можно было бы согласиться. А то пишешь из расчета что int 32 бита, а потом при переносе на архитектуру с int = 16 бит начинаются чудеса. К тому же бывает что это преобразование по умолчанию не нужно, и вот тогда приходится... Код unsigned char a, b;
if((unsigned char)(a + b) < (unsigned char)0x30) выглядит несколько странно
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
Сообщений в этой теме
BelTech Хранение integer во внутреннем EEPROM Feb 22 2007, 21:51 SasaVitebsk Цитата(BelTech @ Feb 22 2007, 22:51) Проб... Feb 22 2007, 22:00 BelTech Я работаю в Codevision и попробовав:
unsigned ... Feb 22 2007, 22:21 smk В CVAVR можно объявить так переменную (а я так дел... Feb 22 2007, 22:40 WHALE Дык и обьявите ее
eeprom unsigned int curr_pos;
а... Feb 22 2007, 22:46 Leen Довольно некорректно, промежду прочим.
Цитатаunsig... Feb 23 2007, 03:48 SasaVitebsk Цитата(Leen @ Feb 23 2007, 04:48) Довольн... Feb 23 2007, 13:40 BelTech WHALE и smk
Про такое объявление переменной я знаю... Feb 23 2007, 10:43 smk Цитатаcurr_pos в программе постоянно меняется и ес... Feb 23 2007, 10:50 defunct Один из вариантов:
Кодtypedef unsigned char U8;
... Feb 23 2007, 13:59 Alex11 Для IAR выражение curr_pos = curr_pos_lsb + curr_p... Feb 23 2007, 15:18 SasaVitebsk Цитата(Alex11 @ Feb 23 2007, 16:18) Для I... Feb 23 2007, 22:28    SasaVitebsk Цитата(Сергей Борщ @ Feb 24 2007, 22:39) ... Feb 25 2007, 14:06
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|