Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Сначала приводится такой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ЖЁСТКОЕ ПОРНО ВЫРЕЗАНОK&RSTRCPY(S, T) /* COPY T TO S; POINTER VERSION 1 */ CHAR *S, *T; WHILE ((*S = *T) != '\0') S++; T++; с ним я согласен. Далее Код: plaintext 1. 2. 3. 4. 5. ЖЁСТКОЕ ПОРНО ВЫРЕЗАНОK&RSTRCPY(S, T) /* COPY T TO S; POINTER VERSION 2 */ CHAR *S, *T; WHILE ((*S++ = *T++) != '\0') ; Полностью ли корректен данный код ? Вспоминается пример. Код: plaintext 1. 2. Ниже идёт комментарий : K&RЗдесь увеличение S и T внесено в проверочную часть. Значением *T++ является символ, на который указывал T до увеличения; постфиксная операция ++ не изменяет T, пока этот символ не будет извлечен. Точно так же этот символ помещается в старую позицию S, до того как S будет увеличено. Конечный результат заключается в том, что все символы, включая завершающий \0, копируются из T в S. Перечитал этот текст три раза, понял. И слева и справа происходит работа со старыми значениями, и только потом происходит инкремент. Но если вы более пристально его изучите, то вы обратите внимание на то, что нигде не делается комментариев на то, что массивы должны быть равны. Я это заметил только в следующем примере: K&RSTRCPY(S, T) /* COPY T TO S; POINTER VERSION 3 */ CHAR *S, *T; WHILE (*S++ = *T++) ; 1 вопрос. Мне кажется что лучше узнать длину массива S (SIZEOF), сравнить с длиной T, и уже в дальнейшем в зависимости от полученных значений либо выводить сообщение о невозможности копирования, либо продумать варианты. Вы наверное знаете что будет если попытаться скопировать массивы разной длины, я не знал. Хотя результат вероятно зависит от архитектуры. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. на экране появились мои defjk и также Debug Error следом, но фактически, как я понял,j and k попали в те ячейки где совсем не должны были находиться и возможно что-то переписали. Это верно ? Прокомментируйте пожалуйста рассуждения, в чём я ошибаюсь или не ошибаюсь? 2. Вообще не нравится конструкция while (*s++ = *t++); У меня сразу чувство что я буду путешевствовать по всем ячейка памяти. Хотя, видимо компилятор действительно знает что это массив, и если длины массивов одинаковые, то всё ок. Это нормальная конструкция в целом ? Насколько она безопасная ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 07:25 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercury2. Вообще не нравится конструкция while (*s++ = *t++); У меня сразу чувство что я буду путешевствовать по всем ячейка памяти. Хотя, видимо компилятор действительно знает что это массив, и если длины массивов одинаковые, то всё ок. Это нормальная конструкция в целом ? Насколько она безопасная ? Эта конструкция предназначена только для строк. Т.е. в исходном буфере по любому встретится 0. Буфер на который указывает s должен быть не меньше буфера t. Проверить это никак нельзя, поэтому функция и не проверяет. В случае если буфер будет меньше чем надо либо если в исходной строке нет завершающего нуля, то будет выход за границы массива, которое в С/С++ является UB (undefined behavior). Не допустить этого - задача вызывающего кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 09:01 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Первый приведенный кусок кода не корректен и быстро приведет к segmentation fault. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 09:26 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercury, выложи код в нормальном виде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 10:03 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
wst как гостэSashaMercury, Первый приведенный кусок кода не корректен и быстро приведет к segmentation fault. код без базара некорректен, потому что скобок нет . были бы скобки, == был бы корректер на 100 % ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 10:07 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, так я просто копирую из книги(Она у меня в формате pdf ) Тоже раньше не понимал почему так, но потом понял, код следует трактовать так: K&R STRCPY(CHAR *S, CHAR *T) { WHILE ((*S = *T) != '\0') S++; T++; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 10:10 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Скобки опять забыл :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 10:25 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Там не только скобок не хватает, еще и буквы слишком заглавные, если определять условием корректности кода как минимум его компилируеиость без кучи дефайнов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 10:43 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Ну что такое :)Исправил Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Ответьте ещё на этот вопрос, пожалуйста ) S как я понял,j and k попали в те ячейки где совсем не должны были находиться и возможно что-то переписали. Это верно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 11:17 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryОтветьте ещё на этот вопрос, пожалуйста ) S как я понял,j and k попали в те ячейки где совсем не должны были находиться и возможно что-то переписали. Это верно ? k и \0. Строка в С обязательно завершается нулевым символом, поэтому str1[] = 'abc\0', а str2[]= 'defjk\0'. По сути же, верно мыслишь. P.S. Ссылку на первоисточник опять потребуешь? ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 11:29 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
В отладочном коде некоторые компиляторы оставляет вокруг данных в стеке свободное место и вставляют в код проверки что в эти области никто не писал. Аналогично для динамически выделяемой памяти. 'j' и 'k' попали в это свободное место. В релизе они просто попортили бы данные в стеке, дальнейшее уже в общем случае предсказать невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 11:34 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercury Код: plaintext 1. Какой смысл постить этот мусор из заглавных букв? Постите то что вы пробуете компилировать, а не копируйте из книги. И что за книга такая - выкинуть нафик и взять нормальную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 11:37 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Понял ))) egorych , не потребую ) Dima_T, White Owl, Anatoly Moskovsky, MasterZiv , mayton, Dimitry Sibiryakov, egorych Всем спасибо за помощь на этой неделе! Вы сделали меня умнее. Всем хорошо отдохнуть ! Dima_T, вам ещё раз отдельно спасибо, за чудесное настроение после разбора прекрасного примера ! Когда вспоминаю ту задачку, сразу улыбаюсь C: S ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 11:52 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky... И что за книга такая - выкинуть нафик и взять нормальную. Неужели уже выросло поколение, для которого K&R буквы не о чём? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 12:02 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
pureproftНеужели уже выросло поколение, для которого K&R буквы не о чём? Если в книге по С написано WHILE то неважно кто автор :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 12:17 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
pureproftAnatoly Moskovsky...И что за книга такая - выкинуть нафик и взять нормальную.Неужели уже выросло поколение, для которого K&R буквы не о чём?поновее издание найди ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 12:20 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercury, брошу свои пять копеек :-) автор1 вопрос. Мне кажется что лучше узнать длину массива S (SIZEOF), сравнить с длиной T, и уже в дальнейшем в зависимости от полученных значений либо выводить сообщение о невозможности копирования, либо продумать варианты. Вы наверное знаете что будет если попытаться скопировать массивы разной длины, я не знал. Хотя результат вероятно зависит от архитектуры. sizeof - размерность типа данных покажет, не так ли? поэтому чтобы узнать полный размер буфера нужно выполнить sizeof(type) * n, где n количество элементов массива, тогда получается, что нам нужно передавать этот самый n в функцию. И соответственно нужно передавать n и для источника и для приемника, чтобы на это не заморачиваться было решено, что эта головная боль ложится на плечи программиста вызывающего функцию, он должен следить чтобы память была выделена в нужном объеме. Если копировать данные и приемник окажется меньше источника, то произойдет переполнение буфера. Переполнение весьма интересная штука, о которой много писалось, например: http://ru.wikipedia.org/wiki/Переполнение_буфера http://www.xakep.ru/post/23646/ 2. Вообще не нравится конструкция while (*s++ = *t++); У меня сразу чувство что я буду путешевствовать по всем ячейка памяти. Хотя, видимо компилятор действительно знает что это массив, и если длины массивов одинаковые, то всё ок. Это нормальная конструкция в целом ? Насколько она безопасная ? Конструкция безопасна, если ее использовать соблюдая все требования - размеры буферов и терминальный символ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 12:39 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryMasterZiv, так я просто копирую из книги(Она у меня в формате pdf ) Тоже раньше не понимал почему так, но потом понял, код следует трактовать так: K&RSTRCPY(CHAR *S, CHAR *T) { WHILE ((*S = *T) != '\0') S++; T++; } Мать, мать, мать ;%;*;%:;:%;? ! Где блин ты видел код на С в верхнем регистре ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 13:37 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryПолностью ли корректен данный код ? Вспоминается пример. Код: plaintext 1. 2. Данные примеры полностью корректны и правильны (по крайней мере я не заметил ничего плохого). И процитированный мной кусок тоже правильный, что вообще тебе там не нравится ? Проблемы с подобным кодом бывают, когда в одном операторе есть более чем один побочнй эффект, затрагивающий один и тот же объект (переменную). По науке это называется "более одного побочного эффекта до ближайшей точки следования". Вот тогда будут проблемы. А что плохого ты видишь в приведённом коде ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 13:45 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Код: plaintext 1. должно быть Код: plaintext 1. const -спецификации давно уже есть и в чистом С, привыкай ВСЕГДА их использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 13:48 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercury, авторна экране появились мои defjk и также Debug Error следом, но фактически, как я понял,j and k попали в те ячейки где совсем не должны были находиться и возможно что-то переписали. Это верно ? Прокомментируйте пожалуйста рассуждения, в чём я ошибаюсь или не ошибаюсь? При копировании буфера большего размера в буфер меньшего размера (на два символа) произошло переполнение приёмного буфера, это привело к защите памяти и остановке программы. Печально то, что происходит ошибка при таких условиях далеко не всегда: в release режимах ничего не проверяется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 13:51 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
[quot pureproft]Anatoly Moskovsky... Неужели уже выросло поколение, для которого K&R буквы не о чём? Я кстати не читал ни K&R , ни даже почти не читал Страустрапа. Ничего, живу как-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 13:53 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
novexelf2. Вообще не нравится конструкция while (*s++ = *t++); У меня сразу чувство что я буду путешевствовать по всем ячейка памяти. Хотя, видимо компилятор действительно знает что это массив, и если длины массивов одинаковые, то всё ок. Это нормальная конструкция в целом ? Насколько она безопасная ? Это -- классическая реализация strcpy из первых юниксов, ничего некорректного тут нет. Наоборот, во всех книгах приводится как пример того, насколько выразителен язык С. (выразителен -- значит кода мало, а делает он много). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 13:55 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЗдравствуйте. Сначала приводится такой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Даже этот код я бы назвал извратом, не говоря о более компактных написаниях. Код должен быть читабельным, а в данном плане маркетинг с++ жертвует читабельностью чтобы показать компактность. Это именно маркетинг, т.к. есть более понятные написания с такой же производительностью. Надо уметь эти извраты понимать, но писать их не советую, подумай о тех кто будет читать твой код после тебя. Любой нездоровый код (с точки зрения читабельности) можно писать только в одном случае - если нужна бОльшая производительность. Во всех остальных случаях лучше отдать приоритет читабельности кода. Т.е. это лучше писать так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Да, это длинно и нудно, но зато понятно всем, даже тем кто мало знаком с Си. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 20:36 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Dima TДа, это длинно и нудно, но зато понятно всем, даже тем кто мало знаком с Си. А мне слету понятна конструкция "while (*s++ = *t++)" а в вашу надо вдумываться чтоб понять. Так что не надо ту про читаемость :) ЗЫ. Есть такое понятие идиома. Это то что новичек не знает, а опытные понимают с полслова. "*s++ = *t++" - это идиома, ее не надо перефразировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 21:40 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyА мне слету понятна конструкция "while (*s++ = *t++)" а в вашу надо вдумываться чтоб понять. Добавь после скольки лет писания на Си "слету понятна". А теперь задумайся захочет ли кто-то с гораздо меньшим опытом после тебя что-то дописывать. Сомневаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 22:21 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Dima T, вот не надо. Захочет, и рад будет. Я вот и хотел добавить в предыдущем посте, что " за это мы и любим наш родной язык С ". А всякие лошары пусть идут и колупаются в своей яве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 22:29 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyА мне слету понятна конструкция "while (*s++ = *t++)" а в вашу надо вдумываться чтоб понять. Так что не надо ту про читаемость :) Ну просто таки не могу удержаться : Anatoly MoskovskyА вообще меня всегда поражало, как люди мучают себя и других используя такие конструкции Код: plaintext 1. вместо того чтобы написать Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 22:31 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
MasterZivА всякие лошары пусть идут и колупаются в своей яве. Лошары колупаются в 1С, и им за это очень даже неплохо платят. При этом им невозможно объяснить как настроить запуск проги из планировщика, но владельцам бизнеса рекомедую обратится именно к ним, т.к. эти лошары легко заменяемы, в отличии от гениальных писателей вместе с уходом которых умирает проект и приносит бизнесу гораздо большие финансовые потери. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 22:36 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyDima TДа, это длинно и нудно, но зато понятно всем, даже тем кто мало знаком с Си. А мне слету понятна конструкция "while (*s++ = *t++)" а в вашу надо вдумываться чтоб понять. Так что не надо ту про читаемость :) ЗЫ. Есть такое понятие идиома. Это то что новичек не знает, а опытные понимают с полслова. "*s++ = *t++" - это идиома, ее не надо перефразировать. Да мало этого, это просто классика, с которой начинается любая книжка по С. Да, она тупая и наивная, но она показывает очень хорошо дух языка -- мощь в каждом символе. С -- хакерский язык, и Unix была хакерская система. Для красноглазиков. Для хакеров. Для мозготрясов. С -- это ассемблер PDP-11, думающий, что он -- язык высокого уровня. Но он собственно и поднял IT cо дна вычислительного болота, где ученые только молотили всякие модели самолётов и ядерных взрывов. Ну, конечно, не всё определялось только созданием С, но это определённо была веха в развитии IT, программы стали переносимыми хоть как-то, это великая вещь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 22:39 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
MasterZivНо он собственно и поднял IT cо дна вычислительного болота, где ученые только молотили всякие модели ... ... модели того как бороздят космические корабли просторы вселенной (с) Ну чего это за самовозбуждение лозунгами? Есть простой факт: программист это обслуживающий персонал, не уборщица, но и не производитель добавленной стоимости, с этим надо смириться и учитывать это в процессе своего творчества. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 22:50 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
MozokНу просто таки не могу удержаться: Anatoly MoskovskyА вообще меня всегда поражало, как люди мучают себя и других используя такие конструкции Код: plaintext 1. вместо того чтобы написать Код: plaintext 1. 2. 3. Не вижу противоречия. Это идиома: Код: plaintext 1. А это Код: plaintext 1. это обычно никому не нужная мутотеть, потому что применяют идиому не к месту. Вот оттуда же: Код: plaintext 1. Ну и нахрена так писать когда можно так: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 23:21 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Вот этот пример нагляднее Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 23:34 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Dima TAnatoly MoskovskyА мне слету понятна конструкция "while (*s++ = *t++)" а в вашу надо вдумываться чтоб понять.Добавь после скольки лет писания на Си "слету понятна".сразу. Именно она меня и покорила, в своё время )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2014, 01:04 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Dima TНу чего это за самовозбуждение лозунгами? Есть простой факт: программист это обслуживающий персонал, не уборщица, но и не производитель добавленной стоимости, с этим надо смириться и учитывать это в процессе своего творчества.ну чего это за самовозбуждение баналами? (с) Ты правда считаешь, что ты открыл нам правду наконец то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2014, 01:07 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
MasterZivDima T, вот не надо. Захочет, и рад будет. Я вот и хотел добавить в предыдущем посте, что " за это мы и любим наш родной язык С ". А всякие лошары пусть идут и колупаются в своей яве.+1 )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2014, 01:10 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Буду опускать регистр в дальнейшем. Я понял. MasterZivдолжно быть char* strcpy_test(char* to, const char* from) Почему значение передатчика должно быть константным ? По поводу Код: plaintext 1. . а) Конструкция, может быть, и применима, но не в этом примере. б)За счёт того что я написал её именно так, а не более развёрнуто, выиграл ли я в скорости выполнения программы ?(хотя бы на 10^(-100) секунды) ? Dima_T Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Да, это длинно и нудно, но зато понятно всем, даже тем кто мало знаком с Си. По-моему отличный код, ничего нудного. Я не считаю что он простой или нудный. Думаю, что при разработке программного обеспечения в каких-либо системах реального времени, или для спутников, используются именно такие чёткие конструкции. f e: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Два этих примера не идентичны, безусловно. Но мне кажется меня поймут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 04:12 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
В этой же главе приведён пример лексикографического сравнения: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Исходя из логики программы, на выходе Код: plaintext 1. 2. 3. будет число 98 (ASCII символ b), что неверное. Программа не учитывает все варианты, нужно добавить проверку на *b=='\0'. И то программа будет не полной. Переписал. Проверьте пожалуйста Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 06:30 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Нашёл у себя отличную ошибку !! Код должен быть такой, вероятно Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 06:38 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 06:42 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryдолжны ли быть const? const при передаче указателя в параметрах означает что внутри твоей функции не происходит изменения данных по адресу указателя. Т.е. вызывающая программа может быть уверена что никаких изменений в ее данных не произойдет. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 07:40 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Dima TMasterZivА всякие лошары пусть идут и колупаются в своей яве. Лошары колупаются в 1С, и им за это очень даже неплохо платят. При этом им невозможно объяснить как настроить запуск проги из планировщика, но владельцам бизнеса рекомедую обратится именно к ним, т.к. эти лошары легко заменяемы, в отличии от гениальных писателей вместе с уходом которых умирает проект и приносит бизнесу гораздо большие финансовые потери. если бы эти гениальные писатели не написали 1с , на с++ между прочим, то тем лошарам просто нечего было бы есть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 09:33 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryб)За счёт того что я написал её именно так, а не более развёрнуто, выиграл ли я в скорости выполнения программы ?(хотя бы на 10^(-100) секунды) ? Все зависит от компилятора, как именно от откомпилирует. Посмотрел у себя во что реально превращается оба варианта - вижу примерно одно и тоже с незначительными отличиями. Можно просто взять и померить Код: 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. Результаты у меняВ дебагe f1() 3478 ms f2() 3604 ms strcpy() = 608 ms f1() 3494 ms f2() 3589 ms strcpy() = 608 ms f1() 3495 ms f2() 3588 ms strcpy() = 608 ms f1() 3495 ms f2() 3588 ms strcpy() = 608 ms f1() 3494 ms f2() 3588 ms strcpy() = 608 ms В релизе f1() 858 ms f2() 827 ms strcpy() = 2808 ms f1() 858 ms f2() 827 ms strcpy() = 2808 ms f1() 843 ms f2() 842 ms strcpy() = 2808 ms f1() 842 ms f2() 842 ms strcpy() = 2808 ms f1() 843 ms f2() 826 ms strcpy() = 2808 ms Т.е. получилось что компактно написанное чуть быстрее в дебаге и чуть медленнее в релизе. И очень странный результат у strcpy(), который стал в 4,5 раза медленнее работать в релизе. Всегда думал что быстрее всего работают родные функции Си, а тут задумался. Все зависит от компилятора. Повтори на своем компиляторе. Может другие результаты будут. Offtop 2 MasterZivMasterZivесли бы эти гениальные писатели не написали 1с , на с++ между прочим, то тем лошарам просто нечего было бы есть... Какое-то странное трактование причинно-следственных связей. Не знаю как это прокомментировать. Что касается причин успеха 1С, то они совсем в другой плоскости, гениальность писателей я бы не ставил на первое место. Да и гениальность под вопросом. Чего только стоит реализация блокировок таблиц в DBFной 1С77, когда ожидающий блокировки процесс в бесконечном цикле пытается заблокировать файл, если все это происходит локально в терминале, то вместо ожидания получается что он отжирает процессорное время у того кто эту блокировку держит, если дальше пытаются получить блокировку другие пользователи, то падал терминал при 4-5 ожидающих. А лечилось в итоге это достаточно просто: грязным хаком патчилась 1С.DLL, где в цикл блокировки вставлялся вызов Sleep(0). PS MasterZiv, предлагаю подтему про гениальность закрыть. Мир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 13:31 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Dina_T, спасибо C: Завтра обязательно проверю все, уже пора спать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 15:52 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Dima_T* Извините(((, это автозамена HTC ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 16:16 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
f1() 9548ms f2() 9469ms strcpy_s() = 17940ms Данные релиза не удалось получить, к сожалению ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 09:46 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryf1() 9548ms f2() 9469ms strcpy_s() = 17940ms Данные релиза не удалось получить, к сожалению По большому счету неважно, т.к. подобными улучшениями много не выиграешь, а времени кучу потратишь на замеры. Но иногда этим заниматься стоит, т.к. бывает что думаешь используешь самый быстрый вариант, а он оказывается чуть ли не самый тормозной. Гораздо полезнее знать алгоритмы увеличивающие производительность. Например можно каждый раз перебирать массив для поиска нужного элемента, а можно отсортировать его и использовать алгоритм двоичного поиска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 10:25 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Dima_TПо большому счету неважно, т.к. подобными улучшениями много не выиграешь, а времени кучу потратишь на замеры. Но иногда этим заниматься стоит, т.к. бывает что думаешь используешь самый быстрый вариант, а он оказывается чуть ли не самый тормозной. Гораздо полезнее знать алгоритмы увеличивающие производительность. Например можно каждый раз перебирать массив для поиска нужного элемента, а можно отсортировать его и использовать алгоритм двоичного поиска. согласен. Вчера вечером понял, мы, скорее всего, неправильно отнеслись к сравнению скорости выполнения данного кода. Процессор обрабатывает команды не только нашей программы, но и других. А если и проводить такое тестирование, то наверное в ОСРВ. И вот ещё. Например у нас есть алгоритм поиска. Мы, в теории, можем рассчитать сложность алгоритма. Количество итераций. Тут аналогично. Мне кажется, нужно посмотреть как наш код выглядит на машинном языке, после всех трансляций, и оценить стоимость каждой операции по времени. Ну опять таки, это нужно делать в ОСРВ. Насколько я помню, только там мы можем говорить о гарантированном времени для каждой операции процессора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 01:53 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВчера вечером понял, мы, скорее всего, неправильно отнеслись к сравнению скорости выполнения данного кода. Процессор обрабатывает команды не только нашей программы, но и других. А если и проводить такое тестирование, то наверное в ОСРВ. Я это учитываю в подобных замерах. Запускаю на ненагруженном компе (когда параллельно ничего не считается). Потом пятикратный запуск. Можно еще приоритет процесса повысить до максимального, но это лишнее, т.к. в итоге работать будет в обычном режиме. SashaMercuryМне кажется, нужно посмотреть как наш код выглядит на машинном языке, после всех трансляций, и оценить стоимость каждой операции по времени. Ну опять таки, это нужно делать в ОСРВ. Насколько я помню, только там мы можем говорить о гарантированном времени для каждой операции процессора Тут на асме этот пример вчера выложил, по сути в машинных кодах. Код после компиляции почти одинаковый получился. Только для современных процессоров нельзя говорить о гарантированном времени выполнения конкретной команды, там слишком много оптимизации: кэши, распараллеливание, конвееры с предсказанием результата и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 09:10 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Dima T Тут на асме этот пример вчера выложил, по сути в машинных кодах. Код после компиляции почти одинаковый получился.ИМХО реализация библиотечной strcpy от while(*s++=*t++) должна сильно отличаться. На асме эффективный по быстродействию код совсем другой. У Agner Fog ( http://www.agner.org) интересная реализация: strcpy Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. memcpy Код: 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. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 07:55 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
m_SlaDima T Тут на асме этот пример вчера выложил, по сути в машинных кодах. Код после компиляции почти одинаковый получился.ИМХО реализация библиотечной strcpy от while(*s++=*t++) должна сильно отличаться. На асме эффективный по быстродействию код совсем другой. Ну не сам же я на асме это писал. Попробуй у себя. По ссылке исходник и копипаст из дебагера MSVC 2008 Express. Для просмотра в АСМе поставить BreakPoint, когда остановится правая кнопка и "Go to Disassebly" Проект "Win32 console Application". Релиз. Настройки компиляции по умолчанию. Кстати код немного отличается (командой lea) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 08:56 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
mingw 4.4.0 release вместо strcpy компилятор вставил : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. :-) полный листинг Код: 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. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 09:47 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
m_Slamingw 4.4.0 release вместо strcpy компилятор вставил ... Продуманный компилятор. Так точно быстрее будет. И строку исходную можно не хранить отдельно. Такому компилятору надо строки длиной кратно 4 давать (с учетом нуля в конце), тогда он только mov dword ... будет вставлять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 10:02 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Прошу прощение, вышеприведённый код неверный. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Правильно Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 07:39 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
И то этот код мне не нравится. Мне кажется что он может быть короче и красивее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 08:03 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Первые 2 if-а внутри цикла никогда не выполнятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 09:36 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, просто не ожидал увидеть ТАКОЕ. Выполнится конечно когда-нибудь. Без поллитры результат выполения сего поделия сразу и не предскажешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 09:45 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
wst, тут всё очень просто. Почему вы так удивляетесь ? Лучше предложите аналогичный, но более короткий аналог ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 10:13 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Пишу сейчас с планшета, поэтому код смогу только вечером отписать. Проблема же в избытке инкрементов внутре short-circuit операторов (&&) которые делают ход выполнения в цикле не вполне очевидным. Так что рекомендую просто взять "неверную" версию функции и исправить только последний return. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 11:30 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЛучше предложите аналогичный, но более короткий аналог Вот аналог (только я не понял зачем ты его переписывать начал) SashaMercury Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. или еще понятней через while() Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 11:56 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Если совсем точно то это не аналог, потому как версия с 6 инкрементами на цикл должна возвращать 0 для s="11" t="121". А тут просто честное сравнение строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 12:09 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Если сравнивать f e "aa" и "aab" вернёт 0. А должно быть 1(либо -1 не помню) Верно ведь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 14:44 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЕсли сравнивать f e "aa" и "aab" вернёт 0. А должно быть 1(либо -1 не помню) Верно ведь ? Есть простой способ проверить: взять, запустить и посмотреть что получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 15:01 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Dima TЕсть простой способ проверить: взять, запустить и посмотреть что получилось Ну, так любой сможет. А вот в уме проиграть код и посмотреть что получилось... Вот это реально прочищает мозги :) ЗЫ. Я в 9-м классе как-то в лагере без компа за пару недель написал ассемблер, в уме отладил, потом вернулся домой, набрал текст из тетради, и сразу заработало без отладки. Вот что Forth животворящий делает :) На С конечно такое "без компа" вряд ли возможно для программ размером больше страницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 17:15 |
|
||
|
K&R 5.5 Указатели символов и функции. Корректен ли код ?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЗЫ. Я в 9-м классе как-то в лагере без компа за пару недель написал ассемблер, в уме отладил ... Ты не один такой был, тоже начинал с компилирования в тетрадке :) Был у меня в 9 классе первый комп ПК Львов с процом 8080. Как загрузишь есть бэйсик встроенный и никаких возможностей (лично у меня) куда-то что-то сохранить. Набил, запустил, поигрался. Бэйсик быстро надоел, т.к. на нем самое элементарное тормозило, но в инструкции к компу был описан АСМ с кодами команд, простенький самплес как этот байт-код запустить. Синтаксис не помню, примерно так Код: plaintext 1. 2. напишешь сначала в тетрадке на асме, рядом "откомпилируешь" в байты, байты долбишь в комп. Накосячил - все повиснет, ребут, поиск ошибок в тетрадке и долби по новой. Стимулировало думать, понимать и внимательно перепроверять чтобы не долбить лишний раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 18:58 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2019697]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
97ms |
get tp. blocked users: |
1ms |
| others: | 291ms |
| total: | 494ms |

| 0 / 0 |
