Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Вот тоже занятное выражение на С(+)
Отправлено
misyachniy
17 мая 2007 г. 12:33
TestPattern = (unsigned)((unsigned long)SramAddr);
Чтобы это значило?
По иоему "unsigned long" лишнее.
Составить ответ
|
Вернуться на конференцию
Ответы
Наверное для того чтобы избавиться от предупреждения(+)
—
misyachniy
(17.05.2007 13:15:29
212.90.165.14
, 108 байт)
Странная фича компилятора, по идее он вообще не должен варнингов выдавать, так как это я вное преобразование типов
—
omen
(17.05.2007 14:26:49
212.176.3.10
,
пустое
)
Правильная фича. Предупреждает, что разме int недостаточен для хранения указателя. При переносе программ экономит нервные клетки.
—
AlexD
(17.05.2007 14:33:38
193.200.21.5
,
пустое
)
Правильная, это когда неявное преобразование, а тут решение программиста и он за него отвечает
—
omen
(17.05.2007 14:51:53
212.176.3.10
,
пустое
)
Ты не понял.
—
AlexD
(17.05.2007 15:02:45
193.200.21.5
, 389 байт)
Это все я понял есно. Интересно, а зв чем вообще глубокий смысл хранения указателя в переменной, для указателя не предназначенной?
—
omen
(17.05.2007 15:16:46
212.176.3.10
,
пустое
)
Это "паттерн" для тестирования памяти. (-)
—
misyachniy
(17.05.2007 15:39:19
212.90.165.14
,
пустое
)
О, это уже другой вопрос, компилятора не касающийся :-)
—
AlexD
(17.05.2007 15:25:45
193.200.21.5
,
пустое
)
угу
—
AlexD
(17.05.2007 13:21:12
193.200.21.5
,
пустое
)
Думаю, не лишнее. Если SramAddr - указатель на байт или вообще void, а в машине, для которой эта прога многобайтные числа располагаются в памяти не младшим а старшим байтом вперед, то тогда вовсе не лишняя.
—
Сидоргек
(17.05.2007 12:59:7
217.146.246.1
,
пустое
)
Да! Скорее всего сея конструкция - для того, что бы работало как при big, так и при little indean.
—
Сидоргек
(17.05.2007 13:01:0
217.146.246.1
,
пустое
)
Фигню ты говоришь.
—
AlexD
(17.05.2007 13:21:49
193.200.21.5
,
пустое
)
Обоснуйте, пожалуйста.
—
Сидоргек
(17.05.2007 14:13:2
217.146.246.1
,
пустое
)
Потому что операции преобразования типа не зависят от расположения слов в машине. Это одна из немногих кросплатформенных вещей в Си.
—
AlexD
(17.05.2007 14:27:13
193.200.21.5
,
пустое
)
даже непонятно что обосновывать:)) лучше покажите пример при каких вариациях данная конструкция не будет работать на big а будет на little или наоборот:)
—
ы
(17.05.2007 14:20:50
80.92.98.211
,
пустое
)
Вообще то уже понял, что фигню говорю. Перемудрил. То, о чем я говорил было бы справедливо для: (unsigned)((unsigned long)*SramAddr); , т.е., если бы речь шла о вычитывании лонгового содержимого, а SramAddress был бы указателем на байт.
—
Сидоргек
(17.05.2007 14:37:19
217.146.246.1
,
пустое
)
Даже не так, а (unsigned*)((unsigned long*)*SramAddr); - короче перемудрил и "беру свои слова в зад" ;-D
—
Сидоргек
(17.05.2007 14:38:33
217.146.246.1
,
пустое
)
MCS51 ? А попробуй без "unsigned long", скорее всего не соберётся :-)
—
AlexD
(17.05.2007 12:37:36
193.200.21.5
,
пустое
)
Скорее всего int недостаточно для хранения адреса. Но программиста интересовали младшие два байта адреса.
—
AlexD
(17.05.2007 12:41:22
193.200.21.5
,
пустое
)
TMS320F2812 у него 32 бита
—
misyachniy
(17.05.2007 12:40:43
212.90.165.14
,
пустое
)
32 бита указатель, а int - ?
—
AlexD
(17.05.2007 12:42:25
193.200.21.5
,
пустое
)
int 16 бит, long 32
—
misyachniy
(17.05.2007 12:52:32
212.90.165.14
,
пустое
)
Вот тебе и ответ
—
AlexD
(17.05.2007 12:57:3
193.200.21.5
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
если прибавить четыре к четырём будет:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru