Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Массив меня не путает, но что касается арифметических действий с указателями, тут вы все правы.
Отправлено
GM 09 апреля 2009, г. 15:24
В ответ на:
Вас массив путает отправлено пользователем
Ald 09 апреля 2009, г. 09:44
Поэкспериментировал с long, как yes подсказал, тихий ужас, вот эти две строчки дают разный результат (для тексаса sizeof(Uint16)=1, sizeof(long)=2)
rcv_b0[1]=(long *)bufsize+0x6D88; //0xDB60
rcv_b0[1]=bufsize+(long *)0x6D88; //0x6E28
Обычно для арифметических выражений (АВ) все переменные должны приводиться к одному типу, потом вычисляться, а тут такого нет. Ну ладно, здесь как-то ещё можно объяснить, что мол АВ для указателей вычисляются по-другому, но вот следующие строчки практически ничем не отличаются, отличие только в паре круглых скобок, а результат разный
rcv_b0[1]=(long *)0x6D88+bufsize; //0x6E28
rcv_b0[1]=(long *)(0x6D88+bufsize); //0x6DD8
Просто кошмар какой-то, ни в какие ворота не лезет, тоже мне хвалёный си, да здесь ошибка может вылезти на ровном месте, и много трудов надо потратить, чтобы её найти.
Спасибо всем, особенно Аld и yes за их долготерпение.
Составить ответ | Вернуться на конференцию.
Ответы