Re: Вы ошибаетесь


Автор сообщения: Необразованный
Дата и время сообщения: 25 April 2007 at 16:22:36:

В ответ на сообщение: Вы ошибаетесь

Мне достаточно того, что в используемой мной версии Фортрана Microsoft Fortran Power Satation 4.0 массивы по умолчанию инициализируются нулями. В чем Вы это компилируете мне по боку.

Не вступая в дискуссию, отмечу, что я не сомневаюсь в том, что Вам по боку на чем я компилирую, но не могли бы Вы (для повышения моей образованности) сообщить, что именно говорится об инициализации массивов в:
Microsoft FORTRAN PowerStation 4.0 Programmer's Guide, Document DD64081-0995
Microsoft FORTRAN PowerStation 4.0 Reference, Document DD64082-0995


И еще одно маленькое пояснение:
real*8 a
integer*4 i

i = 7 ! нечетное целое
a = i/2 !
Результат: а = 3!!

То есть компиллятор восприет это как деление одного целого "i" на другое "2" и отбросит дробную часть несмотря на то, что "а" описано как real.


Не вступая в дискуссию, отмечу, что хоть Ваше утверждение и абсолютно правильно, но к приведенному мной выражению для B отношения не имеет, и Ваше B = (10.*I +10.*(I-1))/2 имеет абсолютно то же значение, что и мое
B = 10.*I/2 +10.*I/2 -10./2 (в отличие от B = 10.*(I/2) +10.*(I/2) -10./2), т.к. "операции равного приоритета, за исключением возведения в степень выполняются слева направо", и следовательно, это выражение эквивалентно (10.*I)/2 +(10.*I)/2 -10./2

Есть простой способ как обойти эту ситуацию - написать a = i/2.0

Не вступая в дискуссию, отмечу, что я лично так и пишу (если нужно получить real*4), а если нужно real*8, то пишу i/2.0D1, а вот Вы почему-то любите (в B= (10.*I +10.*(I-1))/2 ) делить выражение типа real*4 на целую константу 2, что, впрочем, на результате не сказывается.

Поэтому разрешите, не вступая в дискуссию, присоединится к:
Поэтому, обратитесь лучше со своими пожеланиями в другое место.

Без наилучших пожеланий
Н.


2595. Вспышки новых звезд в восточных летописях - Markab 12:32 19.04.07 (63)
К списку тем на странице