Кусок кода который меня поразил
Если тебя удивило выражение вида
2[str] = 't';
то имей в виду, что компилятор C приводит выражение x [ y ] к виду *(x + y)
Поэтому все равно как писать:
str[2] = 't';
или
2[str] = 't';
или
*(str + 2) = 't';
или
*(2 + str) = 't';
2[str] = 't';
то имей в виду, что компилятор C приводит выражение x [ y ] к виду *(x + y)
Поэтому все равно как писать:
str[2] = 't';
или
2[str] = 't';
или
*(str + 2) = 't';
или
*(2 + str) = 't';
Блин. Я вообще говоря это понял. Я же не просил мне это объяснить
Просто меня это восхитило и ужаснуло одновременно 
Просто меня это восхитило и ужаснуло одновременно 
А как связан кусок кода, котрый тебя так восхилил и призыв

Может стоит забить на с/с++?

Потому что это просто ужасно. Руки бы поотрывал...
Может стоит забить на с/с++?
Забей
Не вижу ничего ужасного.
Да, все правильно, надо забить, а ещё снести Линукс, поставить Винду и прогать под дотНЕТ.
На выжатом барсике?
на си-диезе, конечно
Кстати мне весьма нравится C#. Вот mono подрастет, буду его использовать.
Мелкософт очень ругается на Моно.
Это не мои проблемы. Пусть Novell разбирается.
Я это к тому, что может и не успеть подрасти 

Я думаю что Microsoft ничего не сможет сделать. Иначе это получится монополия, а за бугром такого не любят.
Поживём-увидим. Даже интересно, что там дальше будет.
Привести тебе пример ситуации, в которой такое написание кода является на порядок более правильным, чем такое
а?
#include <stdio.h>
int main
{
char str[6] = "Anton";
printf( "%s\n", str );
}
а?
Конечно, привести.
Нам ведь интересно.
Нам ведь интересно.
Легко: берем какую-нибудь машину с гарвардовской архитектурой (раздельная память кода и данных например, микроконтроллер с архитектурой AVR.
Исходник a[0] = 'A', a[1] = 'B' и т.д. оттранслируется в довольно небольшой код вида mov [x], 'A', mov[x+1], 'B' и т.д.
А вот код вида a[6] = "ABCDE" приведет к гораздо более громоздкой конструкции, с созданием дополнительного сегмента в программе для инициализации начальных значний переменных, а так же дополнительного кода (весьма громоздкого и неспешного) для инициализации этих самых переменных.
Если только у вас не супермощный контроллер и не супербольшая (в масштабах контроллера) программа, то это просто пустой расход аппаратных ресурсов
Исходник a[0] = 'A', a[1] = 'B' и т.д. оттранслируется в довольно небольшой код вида mov [x], 'A', mov[x+1], 'B' и т.д.
А вот код вида a[6] = "ABCDE" приведет к гораздо более громоздкой конструкции, с созданием дополнительного сегмента в программе для инициализации начальных значний переменных, а так же дополнительного кода (весьма громоздкого и неспешного) для инициализации этих самых переменных.
Если только у вас не супермощный контроллер и не супербольшая (в масштабах контроллера) программа, то это просто пустой расход аппаратных ресурсов

Ты хоть понял что меня поразило, умник? 

Ты хоть понял что меня поразило, умник?Недопонимание тобой стандарта ANSI C?
насколько я понял, он не совсем об этом говорил, а о том, что можно писать array[index], а можно index[array].
вот именно это его и напрягало.
вот именно это его и напрягало.
Ага. Именно это меня и поразило. Точно. В яблочко. Угу. А как же! 

Балин. Да не напрягало, а поразило! И ужаснуло!
PS: чего вы до меня докапались? Я этот пример сам придумал, основываясь именно на трактовке указателей! И когда я увидел что это действительно собралось и работает - я очень удивился.
PS: чего вы до меня докапались? Я этот пример сам придумал, основываясь именно на трактовке указателей! И когда я увидел что это действительно собралось и работает - я очень удивился.
Балин. Да не напрягало, а поразило! И ужаснуло!Очень печально. Об этом ведь еще Керниган и Ритчи писали.
я тоже удивился в свое время. =)
Маладец. Только в лужу сел ты. А каких умных авторов ты еще знаешь?
Если тебя такой код поражает, то тогда, пожалуй, посмотри код отсюда:
www.ioccc.org
Эти экспонаты тебя, наверное, вообще доведут либо до обморока, либо до оргазма.
www.ioccc.org
Эти экспонаты тебя, наверное, вообще доведут либо до обморока, либо до оргазма.
Блин, одно дело специально запутать код, а другое дело - это.
Блин, одно дело специально запутать код, а другое дело - это.Ты уже посмотрел код?
У меня сейчас нет инета. но я представляю что там может быть. Еще одно соревнование по написанию запутанного кода. поправь меня если я не прав.
Ты неправ.
Goals of the Contest:
P.S. Глеб, вставь ссылку на www.ioccc.org в FAQ что ли... а то каждый год находится кто-нибудь, кто узнает, что на С можно писать коряво, а потом удивляется.
Goals of the Contest:
- To write the most Obscure/Obfuscated C program under the rules below.
- To show the importance of programming style, in an ironic way.
- To stress C compilers with unusual code.
- To illustrate some of the subtleties of the C language.
- To provide a safe forum for poor C code. :-)
P.S. Глеб, вставь ссылку на www.ioccc.org в FAQ что ли... а то каждый год находится кто-нибудь, кто узнает, что на С можно писать коряво, а потом удивляется.
To write the most Obscure/Obfuscated C program under the rules below.
Ну? И в чем я не прав? Практически угадал.
Ну? И в чем я не прав? Практически угадал.Ты не прав в том, что
- To show the importance of programming style, in an ironic way.
- To stress C compilers with unusual code.
- To illustrate some of the subtleties of the C language.
В общем укажи мне фразу в которой я сделал неверное утверждение, пожалуйста. Я же не говорил что этим исчерпываются все их задачи/цели. С моей точки зрения я все сказал верно. Если тебе это непонятно... Ну я даже не знаю.
Это все равно, что заявить, что основное предназначение головы - носить шапку.
Кстати, как ты там говорил,
Скомпилировать gcc
На stdout записывает картинку в pbm.
Кстати, как ты там говорил,
История: у меня есть мной написанный трассировщик лучей.Держи пример из www.ioccc.org:
X=1024; Y=768; A=3;
J=0;K=-10;L=-7;M=1296;N=36;O=255;P=9;_=1<<15;E;S;C;D;F(b){E="1""111886:6:?AAF"
"FHHMM@>>>BBBGGIIKK"[b]-64;C="=::@==@=:=:=:C5""31/513/5131/"
"31/531/53"[b ]-64;S=b<22?9:0;D=2;}I(x,Y,X){Y?(X^=Y,X*X>x?(X^=Y):0, I (x,Y/2,X
:(E=X); }H(x){I(x, _,0);}p;q( c,x,y,z,k,l,m,a, b){F(c
);x-=E*M ;y-=S*M ;z-=C*M ;b=x* x/M+ y*y/M+z
*z/M-D*D *M;a=-x *k/M -y*l/M-z *m/M; pb=a*a/M-
b)>=0?(I (b*M,_ ,0b =E, a+(a>b ?-b:b: -1.0);}Z;W;o
(c,x,y, z,k,l, m,a){Z=! c? -1:Z;c <44?(q(c,x ,y,z,k,
l,m,0,0 p> 0&&c!= a&& (p<W ||Z<0) )?(W=
p,Z=c): 0,o(c+ 1, x,y,z, k,l, m,a:0 ;}Q;T;
U;u;v;w ;n(e,f,g, h,i,j,d,a, b,V){o(0 ,e,f,g,h,i,j,a);d>0
&&Z>=0? (e+=h*W/M,f+=i*W/M,g+=j*W/M,F(Zu=e-E*M,v=f-S*M,w=g-C*M,b=(-2*u-2*v+w)
/3,H(u*u+v*v+w*wb/=D,b*=b,b*=200,b/=(M*MV=Z,E!=0?(u=-u*M/E,v=-v*M/E,w=-w*M/
E):0,E=(h*u+i*v+j*w)/M,h-=u*E/(M/2i-=v*E/(M/2j-=w*E/(M/2n(e,f,g,h,i,j,d-1
,Z,0,0Q/=2,T/=2, U/=2,V=V<22?7: (V<30?1:(V<38?2:(V<44?4:(V==44?6:3
,Q+=V&1?b:0,T +=V&2?b :0,U+=V &4?b:0) :(d==P?(g+=2
,j=g>0?g/8:g/ 20):0,j >0?(U= j *j/M,Q =255- 250*U/M,T=255
-150*U/M,U=255 -100 *U/M):(U =j*j /M,U<M /5?(Q=255-210*U
/M,T=255-435*U /M,U=255 -720* U/M):(U -=M/5,Q=213-110*U
/M,T=168-113*U / M,U=111 -85*U/M) d!=P?(Q/=2,T/=2
,U/=2):0);Q=Q< 0?0: Q>O? O: Q;T=T<0? 0:T>O?O:T;U=U<0?0:
U>O?O:U;}R;G;B ;t(x,y ,a, b){n(M*J+M *40*(A*x +a)/X/A-M*20,M*K,M
*L-M*30*(A*y+b)/Y/A+M*15,0,M,0,P, -1,0,0);R+=Q ;G+=T;B +=U;++a<A?t(x,y,a,
b):(++b<A?t(x,y,0,b):0);}r(x,y){R=G=B=0;t(x,y,0,0);x<X?(printf("%c%c%c",R/A/A,G
/A/A,B/A/Ar(x+1,y:0;}s(y){r(0,--y?s(yy:y);}main{printf("P6\n%i %i\n255"
"\n",X,Y);s(Y);}
Скомпилировать gcc
На stdout записывает картинку в pbm.
Ты опять все перепутал. Надо сравнивать с фразой "назначение головы - носить шапку". И это вполне верное урверждение. Слово "основное" все меняет, не так ли? За пример спасибо.
Скажи человеку, который не знает, что такое голова: "назначение головы - носить шапку", и этот человек будет считать, что основное назначение головы - носить шапку.
Ты согласен что у головы довольно много назначений? Думать, есть в нее, ковырять у нее в носу
, носить шапку... Одной фразой ты ее все равно не опишешь.
, носить шапку... Одной фразой ты ее все равно не опишешь.слушайте, может, кто-нибудь из вас остановится?
интереса в ваших замечательных спорах ни о чем остальным читателям раздела Programming никакого.
субъективно, конечно.
интереса в ваших замечательных спорах ни о чем остальным читателям раздела Programming никакого.
субъективно, конечно.
снести Линукс, поставить Винду и прогать под дотНЕТможно проще: заботать джаву и прогать

Ты хоть понял что меня поразило, умник?
А ты хоть понял, что тебя поразило?
Подумаешь, 5[str]
В языках программирования важна выразительная мощность, на синтаксис абсолютно наплевать (лично мне, по крайней мере).Ну, хотя бы на нем научись, а то за ВМК стыдно становится.
Мне вообще как-то неудобно встревать в дискуссию, тут какие-то куски говна летают, ай-ай-ай...
Так вот. Я бы порекомендовал Брейндеду заботать еще несколько разных языков (из них хотя бы один должен быть функциональным) - типа не чтобы на них прогать, а так, описание синтаксиса почитать и разнообразные хеллоуворлды. А потом еще синтаксический анализатор + интерпретатор/компилятор голого С написАть по бырому. Очень полезно для общего развития.
Я помню, читал как-то раз описание ПХП. Че-то собирался прогать на нем (порносайт какой-то, не помню но потом не сложилось. Так вот, в процессе я со всей ясностью понял, что язык можно разрабатывать по разному, и когда видишь этот самый ПХП, предназначенный для того чтобы как можно быстрее нарисовать голую бабу, соответственно каждая вторая синтаксическая конструкция является хаком для увеличения скорости набора проги, а полное описание _самого_ _языка_ (без стандартных библиотек) занимает страниц эдак сто (если не больше вот, а потом вспоминаешь синтаксис С и тоненькую книжечку в которой было ВСЁ, то понимаешь, как можно применять слово ОРТОГОНАЛЬНЫЙ к языку программирования, и что это слово означает.
С другой стороны, в процессе написАния собственного компилятора чего-нибудь осознаешь, что синтаксис - это страшно условная вещь, и что для добавления в С слова foreach понадобится добавить одну строчку в описание синтаксиса и сотню - в сам компилятор. А потом опять-таки понимаешь как тяжело добиться ортогональности синтаксиса.
И глядя на конструкцию 5[a] начинаешь испытывать чувство глубокого морального удовлетворения. Потому что ортогонально. И вместо &a[5] пишешь a + 5 и чувствуешь себя отлично!
ЗЫ: Ортогональность - это, например, когда каждой открывающейся фигурной скобочке соответствует закрывающаяся, а не пиздец как в паскале.
Так вот. Я бы порекомендовал Брейндеду заботать еще несколько разных языков (из них хотя бы один должен быть функциональным) - типа не чтобы на них прогать, а так, описание синтаксиса почитать и разнообразные хеллоуворлды. А потом еще синтаксический анализатор + интерпретатор/компилятор голого С написАть по бырому. Очень полезно для общего развития.
Я помню, читал как-то раз описание ПХП. Че-то собирался прогать на нем (порносайт какой-то, не помню но потом не сложилось. Так вот, в процессе я со всей ясностью понял, что язык можно разрабатывать по разному, и когда видишь этот самый ПХП, предназначенный для того чтобы как можно быстрее нарисовать голую бабу, соответственно каждая вторая синтаксическая конструкция является хаком для увеличения скорости набора проги, а полное описание _самого_ _языка_ (без стандартных библиотек) занимает страниц эдак сто (если не больше вот, а потом вспоминаешь синтаксис С и тоненькую книжечку в которой было ВСЁ, то понимаешь, как можно применять слово ОРТОГОНАЛЬНЫЙ к языку программирования, и что это слово означает.
С другой стороны, в процессе написАния собственного компилятора чего-нибудь осознаешь, что синтаксис - это страшно условная вещь, и что для добавления в С слова foreach понадобится добавить одну строчку в описание синтаксиса и сотню - в сам компилятор. А потом опять-таки понимаешь как тяжело добиться ортогональности синтаксиса.
И глядя на конструкцию 5[a] начинаешь испытывать чувство глубокого морального удовлетворения. Потому что ортогонально. И вместо &a[5] пишешь a + 5 и чувствуешь себя отлично!
ЗЫ: Ортогональность - это, например, когда каждой открывающейся фигурной скобочке соответствует закрывающаяся, а не пиздец как в паскале.
В целом согласен, но чем тебе паскал не угодил?
Ну типа там есть енды без бегинов и все такое.
?
Наверно, я отстал от жизни. Последний паскаль, с которым я работал активно, был 7.0.
Наверно, я отстал от жизни. Последний паскаль, с которым я работал активно, был 7.0.
case ZZ
1: writeln("1");
2: writeln("2");
end;
за точность не ручаюсь. И еще где-то похожая фигня была.
1: writeln("1");
2: writeln("2");
end;
за точность не ручаюсь. И еще где-то похожая фигня была.
так это енд-кейз. Только не совсем так:
Тебя смущает изпользование одних и тех же символов (например, end) в разных целях? Тогда и в Си, например, запятая может как отделлять элементы массива, так и служить оператором "запятая".
case ZZ of
1: writeln('1');
2: writeln('2');
end; {end-case}
Тебя смущает изпользование одних и тех же символов (например, end) в разных целях? Тогда и в Си, например, запятая может как отделлять элементы массива, так и служить оператором "запятая".
Асетушка, ты сам-то прогать умеешь хоть на чём-нибудь, раз такие слова говоришь?
Меня однажды поразил такой код:
На самом деле - ничего примечательного...
hex_digit= ( (caps)? ("0123456789ABCDEF") : ("0123456789abcdef") ) [digit];
На самом деле - ничего примечательного...
А меня примерно такой:
На этот код обратили внимание еще те кодеры, которые работали над проектом до меня, и оставили с камментом "такой стеб нельзя тереть". Я, по традиции, тоже трогать его не стал. Если кто работал в СиБоссе над этим проектом после меняя - наверно, уже видели этот код и узнали его
pAnIdentifier = (CAnObject *) int)pAnIdentifier) * 0);
...
pAnIdentifier = (CAnObject *) int)pAnIdentifier) * 1);
На этот код обратили внимание еще те кодеры, которые работали над проектом до меня, и оставили с камментом "такой стеб нельзя тереть". Я, по традиции, тоже трогать его не стал. Если кто работал в СиБоссе над этим проектом после меняя - наверно, уже видели этот код и узнали его

C# --- это "до диез" 

зато это английская буква "Си".
а я вот от такого прусь, вставляю везде, где только можно
*int*)0) = 0ead;
А в этом-то что такого парадоксального?
а что пародоксального в остальных примерах? 

С моей точки зрения, ничего странного ни в одном примере нет. А последний уж совсем банальный.
Я знаю с++, python, perl(не очень asm, pascal, немного - lisp, ruby, java, C#. И еще по мелочи читал(не использовал) описания таких языков как modula, haskell, smalltalk. В прошлом году написал интерпретатор языка, похожего на с. Что мне еще сделать?
Осталось только основать небольшую корпорацию и стать самым богатым человеком на планете. 

Handel-C ботай
Я знаю с++, python, perl(не очень asm, pascal, немного - lisp, ruby, java, C#. И еще по мелочи читал(не использовал) описания таких языков как modula, haskell, smalltalk. В прошлом году написал интерпретатор языка, похожего на с.Еще ты собрал свой дистрибутив Linux. Кроме того, мы недавно узнали, что Антон Самохвалов - профессионал, в отличие от некоторых.
Что мне еще сделать?Объяви себя богом.
Дружище, все что я сказал - правда. Ты можешь ерничать сколь угодно долго, ничего от этого не поменяется.
PS: Я люблю программировать. Мне это доставляет удовольствие. Когда я не сплю и не читаю, я программирую. И занимаюсь этим очень давно. Ты хоть можешь допустить что все это правда? Или это тебе кажется невозможным?
PS: Я люблю программировать. Мне это доставляет удовольствие. Когда я не сплю и не читаю, я программирую. И занимаюсь этим очень давно. Ты хоть можешь допустить что все это правда? Или это тебе кажется невозможным?
Вы знаете, может не стоит этого делать, но я это сделаю. Я открою вам свою душу. Я немного выпил, и мне это позволительно. В общем, программирование - это все что у меня есть. У меня нет девушки. У меня есть комп. Мне нравится это делать. Мне компы нравятся больше чем люди. Они надежнее чем люди. Комп никогда не предаст тебя. Понимаете, игнорирование предыдущего вопроса - это как удар в сердце для меня. Неужели сложно поверить что я сделал все это? Что я знаю все эти языки? Что я собрал свой дистр Линукса? Неужели сложно было ответить на этот вопрос? А? В общем я по большому счету ничего не умею кроме как программировать(мыслить подходящим образом). И я пытаюсь делать это очень хорошо. И надеюсь что я делаю это очень хорошо(профессионально). Я даже не боюсь выкладывать свой код на всеобщее обозрение. Для оценки. И почему я не могу получить вопрос на свой ответ?
Мне компы нравятся больше чем люди.
Типичный некрофил.
Чуве, убирай, пожалуйста, порт 8080 из ссылок, которые ты изредка постишь, ладно? 

На самом деле, "знать" язык в том смысле, который вкладываешь,
скорее всего, в это слово ты, и знать язык, на уровне
"свободного владения," так, чтобы писать на нём сразу
красиво,--- это совершенно разные понятия.
Вот, например, люди из БСД, писавшие скрипты для loader(8
"знают" Форт. В этом легко убедиться, если взглянуть на то,
как пишет Чарльз Мур.
Не бояться выкладывать свои произведения на всеобщее обозрение ---
это хорошо. Но это одно не является признаком хорошего программиста.
По поводу надёжности.
Самое надёжное --- это камень.
---
"...И подымал он камни и разговаривал с ними..."
скорее всего, в это слово ты, и знать язык, на уровне
"свободного владения," так, чтобы писать на нём сразу
красиво,--- это совершенно разные понятия.
Вот, например, люди из БСД, писавшие скрипты для loader(8
"знают" Форт. В этом легко убедиться, если взглянуть на то,
как пишет Чарльз Мур.
Не бояться выкладывать свои произведения на всеобщее обозрение ---
это хорошо. Но это одно не является признаком хорошего программиста.
По поводу надёжности.
Самое надёжное --- это камень.
---
"...И подымал он камни и разговаривал с ними..."
Бывает же такое !
или это полная клиника
В общем, программирование - это все что у меня есть. У меня нет девушки. У меня есть комп. Мне нравится это делать. Мне компы нравятся больше чем люди. Они надежнее чем люди. Комп никогда не предаст тебя. Понимаете, игнорирование предыдущего вопроса - это как удар в сердце для меня. Неужели сложно поверить что я сделал все это? Что я знаю все эти языки? Что я собрал свой дистр Линукса?жизнь одна - ещё не поздно одуматься
или это полная клиника

Дружище, все что я сказал - правда.Даже если это так, то всё равно нужно быть более скромным и менее категоричным. (У меня у самого такая проблема.) Даже если ты знаешь очень много, то ты можешь найти для себя неожиданности в том, что ты знаешь досконально (во всяком случае так думаешь). Пример - первый пост этого треда.
Вы знаете, может не стоит этого делать, но я это сделаю. Я открою вам свою душу. Я немного выпил, и мне это позволительно. В общем, программирование - это все что у меня есть. У меня нет девушки. У меня есть комп. Мне нравится это делать. Мне компы нравятся больше чем люди. Они надежнее чем люди. Комп никогда не предаст тебя. Понимаете, игнорирование предыдущего вопроса - это как удар в сердце для меня. Неужели сложно поверить что я сделал все это? Что я знаю все эти языки? Что я собрал свой дистр Линукса? Неужели сложно было ответить на этот вопрос? А? В общем я по большому счету ничего не умею кроме как программировать(мыслить подходящим образом). И я пытаюсь делать это очень хорошо. И надеюсь что я делаю это очень хорошо(профессионально). Я даже не боюсь выкладывать свой код на всеобщее обозрение. Для оценки. И почему я не могу получить вопрос на свой ответ?Относиться к форуму серьёзно - очень большая ошибка. Не злись и не обижайся на форумные подколки. Виртуальное общение - слабая тень реального. То, что пишется с улыбкой на устах может быть прочитано как плевок в душу. Образ человека в форуме совсем не соответствует реальному.
Кроме того виртуальное общение без реального губительно для человеческой психики. Появляются люди, которые предпочитают компы людям. На самом деле они предпочитают общаться с людьми через комп, а не реально. Для борьбы с этим синдромом фидошники собираются на сходки, разработчики на конференции... И хотя на конференциях они в основном бухают, а не обсуждают насущные проблемы, но эти конференции дают толк - дальнейшее виртуальное общение облегчается, потому что люди знают друг друга и читая буквы на экране представляют как их сказал бы виртуальный собеседник если бы был реальным.
P.S. В какой раздел эту тему перенести?
В Love&Sex 

В мусор
Я вчера был неадекватен 
Я вчера был неадекватен 
Зато от души. Это не сильно похоже на обычную форумную флудерастию 

А я типа только вчера полностью осознал, что xxx и &xxx это одно и тоже, если xxx - функция.
я вот недавно узнал, что на некоторых архитектурах указатели на данные и на функцию имеют разный размер
? Это как? И можно пример?
Уж не в Гарварде ли?
> я вот недавно узнал, что на некоторых архитектурах указатели на данные и на функцию имеют разный размер
Это там где код и данные располагаются в разных областях памяти?
А что даёт попытка приведения к void *?
Это там где код и данные располагаются в разных областях памяти?
А что даёт попытка приведения к void *?
а может я и наебался, не могу найти что-то источник, откуда я это взял 

Насколько я понял, всё же наебался в некотором роде: POSIX использует то, что указатели одинакового размера,
то есть на вменяемых архитектурах размер одинаков. Хотя стандарт C таких гарантий не даёт.
Это я с "прямым углом спутал", то есть с function descriptors в ppc64 и ia64, о которых недавно слышал.
то есть на вменяемых архитектурах размер одинаков. Хотя стандарт C таких гарантий не даёт.
Это я с "прямым углом спутал", то есть с function descriptors в ppc64 и ia64, о которых недавно слышал.
то есть на вменяемых архитектурах размер одинаков. Хотя стандарт C таких гарантий не даёт.Вот вот. На вменяемых архитектурах.
А на невменяемых, например на том же AVR, имеем
Keyword Storage Memory Range
__tiny 8 bits Data 0x0-0xFF
__near 16 bits Data 0x0-0xFFFF
__far 24 bits Data 0x0-0xFFFFFF (16-bit pointer arithmetics)
__huge 24 bits Data 0x0-0xFFFFFF
__tinyflash 8 bits Code 0x0-0xFF
__flash 16 bits Code 0x0-0xFFFF
__farflash 24 bits Code 0x0-0xFFFFFF (16-bit pointer arithmetics)
__hugeflash 24 bits Code 0x0-0xFFFFFF
__eeprom 8 or 16 bits EEPROM 0x0-0xFF or 0x0-0xFFFFFF
__generic 1+15 bits Data/Code The most significant bit (MSB) determines whether
1+23 bits __generic points to CODE (1) or DATA (0). The
small generic pointer is generated for the processor
options -v0 and -v1.
Приведение указателей на пямять одного типа к указателям на память другого типа принципиально возможно, но такое пиведение не имеет какого-либо смысла и является просто арифметическим действием. Код вида *a = 5 генерирует совершенно разные результаты на ассемблере в зависимости от класса памяти указателя а. И это все не отклоняясь от требований C, обратите внимание.
А еще, под DOS была такая вещь, как модели памяти. И там тоже можно было делать указатели на код и данные разного размера (например, указатели на код по умолчанию __near, а указатели на данные по умолчанию __far). Даже в неймановской архитектуре.
Относиться к форуму серьёзно - очень большая ошибка. Не злись и не обижайся на форумные подколки. Виртуальное общение - слабая тень реального. То, что пишется с улыбкой на устах может быть прочитано как плевок в душу. Образ человека в форуме совсем не соответствует реальному.
Кроме того виртуальное общение без реального губительно для человеческой психики. Появляются люди, которые предпочитают компы людям. На самом деле они предпочитают общаться с людьми через комп, а не реально. Для борьбы с этим синдромом фидошники собираются на сходки, разработчики на конференции... И хотя на конференциях они в основном бухают, а не обсуждают насущные проблемы, но эти конференции дают толк - дальнейшее виртуальное общение облегчается, потому что люди знают друг друга и читая буквы на экране представляют как их сказал бы виртуальный собеседник если бы был реальным.
P.S. В какой раздел эту тему перенести?
это было круто! даже не знаю, что сказать!

Не знаешь что сказать - молчи. Внесите это в FAQ что ли...
Оставить комментарий
mirt1971
#include <stdio.h>int main
{
char str[6];
0[str] = 'A';
1[str] = 'n';
2[str] = 't';
3[str] = 'o';
4[str] = 'n';
5[str] = '\0';
printf( "%s\n", str );
}
Забавно? Может стоит забить на с/с++?