Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Встретил интереснейшие функций ALLOC и FREE, они работают с участком памяти ALLOCBUF. Цитирую участок раздела с описанием и кодом K&RМежду тем, однако, для многих приложений нужна только триви- альная функция ALLOC для распределения небольших участков памяти неизвестных заранее размеров в непредсказуемые момен- ты времени. Простейшая реализация состоит в том, чтобы функция раз- давала отрезки большого символьного массива, которому мы присвоили имя ALLOCBUF. Этот массив является собственностью функций ALLOC и FREE. Так как они работают с указателями, а не с индексами массива, никакой другой функции не нужно знать имя этого массива. Он может быть описан как внешний статический, т.е. Он будет локальным по отношению к исходно- му файлу, содержащему ALLOC и FREE, и невидимым за его пре- делами. При практической реализации этот массив может даже не иметь имени; вместо этого он может быть получен в резуль- тате запроса к операционной системе на указатель некоторого неименованного блока памяти. Другой необходимой информацией является то, какая часть массива ALLOCBUF уже использована. Мы пользуемся указателем первого свободного элемента, названным ALLOCP. Когда к функ- ции ALLOC обращаются за выделением N символов, то она прове- ряет, достаточно ли осталось для этого места в ALLOCBUF. Ес- ли достаточно, то ALLOC возвращает текущее значение ALLOCP (т.е. Начало свободного блока), затем увеличивает его на N, с тем чтобы он указывал на следующую свободную область. Фун- кция FREE(P) просто полагает ALLOCP равным P при условии, что P указывает на позицию внутри ALLOCBUF. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Обратите внимание на строчку выделенную красным цветом. Я понял это так, будет ли адрес нового "начала памяти"(из буфера) куда можно писать данные, располагаться до последнего адреса памяти. Но вот о чём пишут ниже: K&RПроверки вида IF (ALLOCP + N <= ALLOCBUF + ALOOCSIZE) и IF (P >= ALLOCBUF && P < ALLOCBUF + ALLOCSIZE) демонстрируют несколько важных аспектов арифметики указате- лей. Во-первых , при определенных условиях указатели можно сравнивать. Если P и Q указывают на элементы одного и того же массива, то такие отношения, как <, >= и т.д., работают надлежащим образом. Например, P < Q истинно, если P указывает на более ранний элемент массива, чем Q. Отношения == и != тоже работают. Любой указатель мож- но осмысленным образом сравнить на равенство или неравенство с NULL. Но ни за что нельзя ручаться, если вы используете сравнения при работе с указателями, указывающими на разные массивы. Если вам повезет, то на всех машинах вы получите очевидную бессмыслицу. Если же нет, то ваша программа будет правильно работать на одной машине и давать непостижимые ре- зультаты на другой. Но ведь может ведь быть ситуация что адрес ALLOCP + N будет выходить за предел ALLOCBUF, тогда непонятно что произойдёт, согласно вышесказанному. Вероятнее всего я что-то не так понял, ибо вероятность ошибки K&R очень близка к нулю. Можно ли делать проверку таким образом: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 09:27 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
Читай внимательно то что выделил Но ни за что нельзя ручаться, если вы используете сравнения при работе с указателями, указывающими на разные массивы У тебя один массив в примерах. Я так понимаю фраза эта на всякий случай. В здравом уме мало кому в голову придет сравнивать указатели на разные массивы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 14:22 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВероятнее всего я что-то не так понял, ибо вероятность ошибки K&R очень близка к нулю. Ошибки - может быть. Использование неудачного выражения (в особенности после обработки текста переводчиком) - весьма вероятно. Базовая информация о работе компьютеров: указатель это переменная целого типа, содержащая номер ячейки памяти (или, другими словами, индекс в массиве байт). Всё. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 16:07 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
Dima_T, спасибо. Но если n будет больше 1000,например, то левая часть будет адресом вне allocbuf, возможно тот адрес будет принадлежать allocbuf2. Снова ошибаюсь в рассуждениях ?( Dimitry Sibiryakov , не очень понял к чему ваш второй абзац ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 16:30 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
SashaMercuryне очень понял к чему ваш второй абзац Ликбез. Я уверен, что Вы этого не знаете. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 16:47 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
SashaMercury, ты тут абсолютно прав, и что интересно оно (код этот) действительно может где-то не работать, на каких-то экзотических платформах. поэтому я бы считал количество байт, а не разницы указателей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 17:08 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
SashaMercuryDima_T, спасибо. Но если n будет больше 1000,например, то левая часть будет адресом вне allocbuf, возможно тот адрес будет принадлежать allocbuf2. Снова ошибаюсь в рассуждениях ?( Ты все усложняешь. В Си все слишком просто и отсюда все проблемы и сложности этого языка. Все переменные это набор байт памяти, а то как эти байты надо читать определяется типом переменной. В Си главное четко представлять как что хранится в памяти. В высокоуровневых языках это не так. Тут, например, элементарно прочитать строку как число и наоборот. Например ни в одном высокоуровневом языке невозможно такое: Код: plaintext 1. 2. В Си это код не вызовет ошибок в большинстве случаев. Любая переменная это просто последовательность X байт в памяти. Массив из N элементов - непрерывный кусок памяти размером X*N байт. Например int занимает 4 байта, массив int a[100] - 400 байт. Обращение к элементу a[101] означает прочитать 4 байта с адреса = адрес начала массива + 4*101, причем никаких нет проверок принадлежности этого адреса к массиву, т.е. если по этому адресу есть реальная память - прочитается. Указатель - это переменная которая хранит адрес в памяти где расположено значение. Запусти код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Все что "Adress" это адрес в памяти где хранится значение переменной, сам адрес ни о чем не говорит, т.к. его определяет ОС. Поэтому адреса можно только сравнивать в пределах непрерывной последовательности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 20:36 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
Запусти и попробуй понять как работает Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 20:51 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
Ну на момент написания книги эти платформы были не такие экзотические. Например при сегментной адресации указатели в разных сегментах сравнивать нет смысла, поскольку они вообще могут быть в разных адресных пространствах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2014, 21:00 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovБазовая информация о работе компьютеров: указатель это переменная целого типа, содержащая номер ячейки памяти (или, другими словами, индекс в массиве байт). Всё. Спасибо, за то что вы пытаетесь дать мне какие-то знания, но мне не кажется что в данной ситуации вы правы. Тип данных фундаментальное понятие теории программирования. Если мы говорим о типе данных, то мы говорим о том: 1) Какие элементы принадлежат этому типу данных(множество значений) 2) Наборе операций с данными элементами (первые два в совокупности уже напоминают грубое определение пространства в математике, и говорят о том что смысл вкладываемый в данное понятие не тривиален) 3) Какие образом данные элементы будут храниться в памяти Итак, целый тип данных(Ц) и указатели(У. 1)Ц-хранит множество Z целых чисел f e 125, а У хранит адреса памяти f e 0x123 2)Арифметика также различна, f e, я могу умножить два целых числа ?м. не всегда но могу, очевидно, что я результирующее значение может выйти за пределы выделенной памяти на данный тип памяти, указатели умножать нельзя вообще. Но вот например операция деления с остатком всегда оставляет Ц в в том же множестве то есть если z,k belong Z, то операция z%k belong Z всегда, но к типу данных У данная операция неприменима 3)Наверное про это вы и хотели сказать, что для хранения адреса ОП достаточно столько же памяти сколько необходимо для хранения целого типа данных в С. Если вы хотели сказать это, то укажите пожалуйста источник, только не ссылки на сайты, а книгу. Спасибо. Так-же, мне интересно согласны ли вы с моим комментарием, либо я неверно сейчас рассуждал ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 02:22 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
Кстати, K&R Глава 5.6. Указатели - не целые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 02:36 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. Dima_T, отличный пример ! Спасибо !!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 04:37 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
Dima_T, MasterZiv, Anatoly Moskovsky Я получил ответы от всех кто понимает всё это лучше меня, и кому я верю, но они различны, подведите пожалуйста итог под первым вопросом. Причём Dima_T и MasterZiv ответили определённо, а Anatoly Moskovsky вообще сделал загадочный комментарий. 1. Допустим адрес левой части фактически будет принадлежать другому массиву, а он будет принадлежать, если мы попробуем выделить 1200 символов. Это верно ? 2. С учётом комментариев K&R то сравнение пройдёт корректно или возможно некорректно ? Ну да, если в каждом сегменте будет относительная адресация, то очевидно что сравнение будет некорректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 04:52 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
SashaMercury1. Допустим адрес левой части фактически будет принадлежать другому массиву, а он будет принадлежать, если мы попробуем выделить 1200 символов. Это верно ? 2. С учётом комментариев K&R то сравнение пройдёт корректно или возможно некорректно ? Да все ж уже объяснили и в книге и тут. На равенство/неравенство можно сравнивать любые указатели (включая NULL). Отношение порядка (сравнение на больше-меньше) имеет смысл только для указателей внутри одного массива., даже если платформа технически позволяет это делать для любых указателей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 05:14 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov , кстати. в 64 битной системе даже размер указателя и размер целого типа должен отличаться. 8 и 4 соответственно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 07:05 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
SashaMercuryСпасибо, за то что вы пытаетесь дать мне какие-то знания, но мне не кажется что в данной ситуации вы правы. Тип данных фундаментальное понятие теории программирования. Если мы говорим о типе данных, то мы говорим о том:Вот здесь твоя главная проблема. В "теоретическом" программировании есть понятие типа данных. Но в практическом программировании каждый тип данных это набор ноликов и единичек. Вот то самое что в школе проходили в первом классе: "компьютера оперирует ноликами и единичками и только ими". Вот ты наконец дошел до них, но не узнаешь. Когда ты пишешь на Си и более низких языках ты ВСЕГДА оперируешь байтами, в Си они могут "прятаться" под словами int/char/long/указатель или массив, но ты ВСЕГДА работаешь с байтами и до любого байта в любом "типе данных" ты можешь добраться. Если это учитывать, то можно считать что в Си нету типов данных вообще. Ты всегда почти напрямую работаешь с памятью. SashaMercuryИтак, целый тип данных(Ц) и указатели(У. 1)Ц-хранит множество Z целых чисел f e 125, а У хранит адреса памяти f e 0x123И целое и указатель это по существу одно и тоже. Разница только в том, как ты обозвал этот участок памяти в данной строке программы. Причем разница эта только на уровне компилятора. Если ты заявил что abc это целое, то компилятор попытается напомнить тебе если ты используешь abc там где предполагается использовать указатель и наоборот. Если ты делаешь char *qwe=(char*)abc (где abc это целое число или указатель на любой тип данных) то компилятор не будет ругаться. Но на самом деле и никакой конвертации делаться не будет. В реальности компьютер просто скопирует несколько байт из одного места памяти в другое. Вот если бы ты писал на чем-нибудь типа Бейсика, то аналогичная операция действительно потребовала бы кое-какой работы от компьютера потому что в Бейсике каждый тип данных аналогичен структуре в Си из двух полей: байт содержащий номер типа данных и массив байт с собственно данными. Там для конвертации из одного типа в другой надо слегка поработать. SashaMercury3)Наверное про это вы и хотели сказать, что для хранения адреса ОП достаточно столько же памяти сколько необходимо для хранения целого типа данных в С. Если вы хотели сказать это, то укажите пожалуйста источник, только не ссылки на сайты, а книгу.Нет. Размер указателя в современных настольных компьютерах по случайности совпадает с размером целого числа. Это факт. Случайный, но факт. Чтобы понять размеры целого и указателя надо нырнуть чуть глубже - на уровень процессора и материнской платы. Просто современным разработчикам процессоров и памяти показалось что это будет удобно если размер слова и размер адресной шины будет совпадать. Сейчас это уже устоявшаяся традиция, но раньше (всего-лишь во времена ДОСа) размеры целого и указателя были разными. Хочешь учебник? Начни с Таненбаума. Он очень хорошо рассказывает о связи между железом и софтом. http://www.amazon.com/Modern-Operating-Systems-3rd-Edition/dp/0136006639/ref=sr_1_4?ie=UTF8&qid=1391052842&sr=8-4 Существуют переводы этого учебника, сам найдешь если нужно. SashaMercuryТак-же, мне интересно согласны ли вы с моим комментарием, либо я неверно сейчас рассуждал ?Неверно. Тебе очень не повредило бы почитать какой-нибудь учебник по ассемблеру. Пощупать прямую работу на уровне байтов. Тогда будет проще понять что типов данных на самом деле нет. Из хороших ассемблерных учебников я могу назвать только Питера Абеля, хоть он и устарел слегка. И обязательно прочти Таненбаума! По началу будет слегка тяжеловато, он все примеры дает уже на Си и ассемблере, но он не использует никаких языковых трюков и сложного синтаксиса. Так что после K&R ты его осилишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 07:50 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
SashaMercurychar* b = (char*)&a; /*вот такое объявление указателей мне нравится,char* b, а не char *b. мне тоже нравится но оно корявое, т.к. такой код Код: plaintext 1. означает совсем не то что думаешь. Тут x будет иметь тип char а не char*. SashaMercury Это значит,..мм, это значит что теперь указатель будет указывать не на целый тип данных, и считывание будет происходить не по 4 байта. Указатель тепепрь указывает на первый элемент массива char. И должен прочитать 4 символа из каждого байта. Страно что читает 3, должно быть последний это символ конца строки \0, либо что-то пока не так понимаю. Но код жутко интересный. Сейчас узнаю что будет дальше. Нужно узнать как происходит считывание символов какая кодировка и тп. */ printf("%d=%s\n", a, b);/*b в данном случае читается как строка. наверное нужно использовать таблицу ASCII. на всякий случай узнаю где/что вручную, код ниже. Ура!)))))Читаю биты в обратном порядке и получаю abc!! Dima_T, отличнейший пример!!! Спасибо !!!!!!!!! Мне очень понравилось !!!!!! осталось вспомнить почему процессор читает эти биты в обратном порядке ! В целом верно, но как-то сложно все у тебя получилось. Не надо в биты углубляться, все происходит в байтах. Число типа int занимает 4 байта в памяти, или 32-бита. Т.е. 6513249 в двоичной это 00000000'01100011'01100010'01100001, или в байтах 0'99'98'97. Эти байты в памяти хранятся от младшего к старшему (насколько это стандарт не знаю, но на x86 и x64 это так), т.е. в итоге мы имеем в памяти последовательность байт 97,98,99,0. Например так в памяти это разместилось Адрес ячейки памяти Значение53687649753687659853687669953687670 т.е. 5368764 адрес хранения значения переменной a (само значение адреса мы выбрать не можем, это делает ОС, выделяет память из свободного адресного пространства или из стэка). char* b = (char*)&a; означает создать указатель на тип char и присвоить ему значение с адресом переменной а, т.е. b = 5368764. Т.к. b указатель на char, соответственно отрабатывается как последовательность символов с 0 в конце, т.е. такая строка читается последовательно пока не встретится 0. Вот и получилось что 97 это ASCII код буквы 'a' и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 07:58 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
SashaMercuryDimitry Sibiryakov , кстати. в 64 битной системе даже размер указателя и размер целого типа должен отличаться. 8 и 4 соответственно.Нет. В 64-х битной системе и размер целого и размер указателя - 64 бита. Потому-то эти системы и называются 64-х битными. В 32б системах и целое и указатель по 32 бита. Отсюда и название. Указатель не обязан совпадать с целым по размеру, но это удобно когда они совпадают и почти все современные ОС (и иногда железо) это учитывают. И да, программа скомпилированная для 64б системы не будет работать на 32б, потому что на каждой арифметической операции и каждой операции по работе с памятью будет происходить переполнение со всеми вытекающим проблемами. А 32б программа может работать на 64б системе. Но не сможет использовать всю доступную память и все доступные биты в арифметических операциях. По существу то что 32б программы не всегда работают в 64б ОС это не проблема программы, а проблема ОС которая перестраховывается "а вдруг там есть что-то этакое?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 07:58 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
White OwlВ 64-х битной системе и размер целого и размер указателя - 64 бита Если вы имеете в виду int, то надо еще постараться, чтобы найти 64-битную систему, где int - 64-битный :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 08:05 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
Dima TЭти байты в памяти хранятся от младшего к старшему (насколько это стандарт не знаю, но на x86 и x64 это так),Это вообще не стандарт. Это данность данная нам разработчиками из Intel. Когда они делали свои первые микро-процессоры то посчитали что так будет удобно. А то что до этого, на Больших Компьютерах байты хранились в MSB порядке это посчитали неважным. А вот в Motorolla посчитали что традиции надо соблюдать и в их процессорах MSB сохраняется до сих пор. А все остальные разработчики процессоров посмотрели на эти два решения и встали или в один или в другой лагерь. Когда-то из-за этого были большие войны. Ну а сегодня и MSB и LSB это просто часть жизни, как насморк и комариные укусы. Неприятно, но что поделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 08:11 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
SashaMercuryDimitry Sibiryakov , кстати. в 64 битной системе даже размер указателя и размер целого типа должен отличаться. 8 и 4 соответственно. Узнать размер можно с помощью sizeof() Код: plaintext 1. 2. или просто тип написать Код: plaintext 1. PS Я отстал от жизни немного, у меня пока все 32-битное. Надо как-то собраться и почитать про особенности x64. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 08:15 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite OwlВ 64-х битной системе и размер целого и размер указателя - 64 бита Если вы имеете в виду int, то надо еще постараться, чтобы найти 64-битную систему, где int - 64-битный :)А чего ее искать? Я на такой сейчас сижу и в форум пишу. И подозреваю что больше половины тех кто этот пост читают тоже на таких сидят. Хотя да, sizeof(int) скорее всего действительно вернет 4. Но это потому что разработчики комипилятора(-ов) так решили. Про GNU точно знаю, сейчас не могу найти, но видел где-то в доках утверждение что мол они так специально решили ради compatibility и чтобы облегчить жизнь программистам. Впрочем, вот забавная табличка от Интелов: http://software.intel.com/en-us/articles/size-of-long-integer-type-on-different-architecture-and-os А в реальности использовать вот эту табличку удобнее: http://www.gnu.org/software/libc/manual/html_node/Integers.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 08:31 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
White OwlХотя да, sizeof(int) скорее всего действительно вернет 4. Но это потому что разработчики комипилятора(-ов) так решили Ну так я об этом и говорю. Если речь про int - то тут как раз разработчики комипилятора и должны решать. :) На большинстве 64-битных платформ int - 32-битный. А если вы про что-то другое говорили, то нужно явно указать про какие целые вы говорите, а не утверждать то, что не соответствует действительности. Вас могут и дети читать, чему вы их учите? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 08:38 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyWhite OwlХотя да, sizeof(int) скорее всего действительно вернет 4. Но это потому что разработчики комипилятора(-ов) так решили Ну так я об этом и говорю. Если речь про int - то тут как раз разработчики комипилятора и должны решать. :) На большинстве 64-битных платформ int - 32-битный.Тогда уж не "на большинстве платформ", а "в большинстве 64-х битных компиляторов". Платформы то они все-же 64-х битные целиком... Размер регистра урезать не получиться никаким компилятором. Anatoly MoskovskyА если вы про что-то другое говорили, то нужно явно указать про какие целые вы говорите, а не утверждать то, что не соответствует действительности. Вас могут и дети читать, чему вы их учите? :)Я про платформу как раз. Про железо и про фактический размер. А детей я учу целостной картине мира. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 08:43 |
|
||
|
K&R глава 5.4 Адресная арифметика
|
|||
|---|---|---|---|
|
#18+
White OwlЯ про платформу как раз. Про железо и про фактический размер. А детей я учу целостной картине мира. С точки зрения аппаратной платформы вот эта фраза не имеет смысла Код: plaintext 1. так как в процессорах практически никогда нет раздельных типов данных для целых и указателей. Хотя новичек из нее может сделать вывод что int бывает - 64-битный. Т.е. она просто вводит в заблуждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 08:52 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38542974&tid=2019723]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 180ms |

| 0 / 0 |
