Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Забавно... я в тупике =]


Автор: Batou 2.5.2005, 17:32
Код

unsigned long ReadLong (void)
{
 unsigned long temp1,temp2;
 unsigned long temp3,temp4;

 temp1=ReadInt ();
 temp2=ReadInt ();

 return (temp3+(temp4*0x10000L));
}

by Martin van Velsen(из описания формата файла 3ds , Document Revision 0.93 - January 1997)

объясните мне - этот кусок кода работоспособен? у мя подозрения что нифига =0

Автор: AISIN 2.5.2005, 19:23
Забавный код...
после unsigned long temp3,temp4;
temp3=3435973836
temp4=3435973836
дальше идет инициализация temp1 и temp2
а затем return ((3435973836+(3435973836*65536)),т. е. функция возвращает 2576927948
Хотя компилятор ругается
warning C4307: '*' : integral constant overflow
warning C4307: '+' : integral constant overflow
warning C4700: local variable 'temp3' used without having been initialized
,но прогу компилирует.
Код на моем компиляторе работать будет если ReadInt () не подкачает, но я бы так не делал.
----------------------------------
smile

Автор: Fire-Plug 2.5.2005, 22:10
Цитата(Batou @ 2.5.2005, 17:32)
объясните мне - этот кусок кода работоспособен

Цитата(Batou @ 2.5.2005, 17:32)
unsigned long temp3,temp4;

Если считать нормой использование НЕ инициализированных локальных переменных temp3,temp4, то вполне работоспособен smile
ЗЫ: Непонятно только зачем инициализировать одни переменные, а для вычислений использовать другие

Автор: gepard 3.5.2005, 04:05
Код

return (temp3+(temp4*0x10000L));

Какое-то тыкание пальцем в небо.
В temp3 и temp4 может лежать любое значение.

Автор: Nastya 3.5.2005, 08:13
А почему бы ему не работать smile

Автор: Batou 3.5.2005, 09:28
smile у меня все компилится и даже не заикается об ошибках... работает(тока неправильно=) нашел даже несколько других источников на ту же тему - код везде один. У ван Велсена похоже неплохо с чувством юмора... А я-то уже начал грешным делом думать забросить сишник и уехать в Тибет smile

Автор: AISIN 3.5.2005, 14:36
Batou У компиляторов обычно несколько уровней диагностики.
На самом верхнем уровне компилятор начинает предираться к самым не значительным мелочам.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)