akaGM
Platinum Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Vskazka Цитата: Двумерная матрица в фортране и в си, вещи сугбо разные |
Код: int testdim[2][2]; void main() { testdim[0][1] = 11; testdim[1][0] = 22; printf("%d\n", testdim[0][1]); printf("%d\n", testdim[1][0]); } --------------------------------------------- integer*4 testdim(2,2) testdim(1,2) = 11 testdim(2,1) = 22 print *, testdim(1,2) print *, testdim(2,1) end | асм все знают? :) Код: для Си: _DATA SEGMENT COMM _testdim:DWORD:04H _DATA ENDS mov DWORD PTR _testdim+4, 11 mov DWORD PTR _testdim+8, 22 ---------------------------------------------- для фортрана: _BSS SEGMENT DWORD PUBLIC FLAT 'BSS' TESTDIM DD 4 DUP (0H) _BSS ENDS mov DWORD PTR [TESTDIM+4], 22 mov DWORD PTR [TESTDIM+8], 11 | объяснять что это полный аналог? т.е. то, что: 1. везде адрес массива==адрес его первого элемента 2. массив -- непрерывная последовательность элементов одного типа заданного размера 3. адрес каждого элемента вычисляется смещением относ. начала по строкам, по столбцам нынче здесь, завтра там /стоп. Остапа понесло.../ вот что касается бОльших размерностей, тут, думаю, ты уже прав, я не знаю... Цитата: не помню кто впервые склепал фортран | http://ru.wikipedia.org/wiki/Fortran :) ну вот, пока ассемблерил, пропустил такую интересную подробность... Andrew10, спасибо, не знал... | Всего записей: 24112 | Зарегистр. 06-12-2002 | Отправлено: 16:19 09-04-2010 | Исправлено: akaGM, 16:31 09-04-2010 |
|