crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> головолмка по с, задачка для тренировки мозга
kwisp
  опции профиля:
сообщение 13.5.2009, 14:42
Сообщение #1


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


соберите и посмотрите что выходит:)
Раскрывающийся текст
#include <stdio.h>

main(int t, int _, char *a)
{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)): 1,t<_ ? main(t+1,_,a):3,main(-94,-27+t,a)&&t==2\
?_<13?main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?
main(_,t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n\
{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!\
/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!\
/n{n#';r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/\
w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c;;{nl'-{}rw]'/+,}##'*}\
#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:t<-50?_==*a?putchar(31[a]):
main(-65,_,a+1):
main((*a=='/')+t,_,a+1):
0<t?main(2,2,"%s")
:*a=='/'||main(0,main(-61,*a,
"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"
),a+1);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 15.5.2009, 16:48
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(BRE @ 15.5.2009, 20:34) *
Что тебя не устраивает в коде?
к стати сказать, а уменя компиллер пишит предупреждения относительно аргументов функции main.
И я никогда не видел, что бы их было три штуки. Это соответствует стандарту?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 15.5.2009, 17:29
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(Litkevich Yuriy @ 15.5.2009, 17:48) *
к стати сказать, а уменя компиллер пишит предупреждения относительно аргументов функции main.
И я никогда не видел, что бы их было три штуки. Это соответствует стандарту?

По стандарту C очень "свободно" относиться к аргументам функций. Вот пример:

Файл a.c
void func( int a, int b );

int main( int argn, char *argv[] )
{
    func( 100, 20 );
}


Файл b.c
#include <stdio.h>

void func( int a )
{
    printf( "%i\n", a );
}


Компилируем и получаем работающую программу.
Т.е. компилятор обрабатывая исходник a.c сгенерирует код, который положит два числа на стек и вызовет функция func. Что там эта функция будет делать и какие значения брать со стека ему все равно. Как только эта функция отработает, следующий код снимит два числа со стека. Адрес функции func компилятор еще не знает, его настроит линкер при сборке объектников.

main это обычная функция, которая вызывается из специального кода CRT, после подготовки программы к работе. Т.е. операционка передает управление на точку входа кода CRT, он настраивает что нужно (например, подготавливает аргументы командной строки), потом в стек кладется количество аргументов и указатель на массив строк параметров и делается call _main.


Цитата(Влад @ 15.5.2009, 18:08) *
В том-то и дело, что НЕ собирается, и компилятор не предупреждает, а сообщает об ошибке. Вот это и не устраивает.

Когда ты компилятору говоришь трактовать предупреждения как ошибки он это и делает, но это проблемма не языка С, а самого компилятора.
По стандарту С ты можешь не указывать явно тип возвращаемого значения у функции и по стандарту он будет трактоваться как int. Компиляторы предупреждают об этом, именно предупреждают.
Если завтра выйдет компилятор, который будет через каждый час работы выдавать предупреждение "Программист, пойди отдохни, не смотри в монитор", и ты ему скажешь все предупреждения расценивать как ошибки, то это будет проблемма компилятора, а не языка программирования. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- kwisp   головолмка по с   13.5.2009, 14:42
- - Litkevich Yuriy   какой ужас   13.5.2009, 14:56
- - ViGOur   Прикольненько!   13.5.2009, 15:25
- - kwisp   Цитата(Litkevich Yuriy @ 13.5.2009, 15:56...   13.5.2009, 20:10
- - Kagami   А у меня оно не собирается Раскрывающийся текстk...   13.5.2009, 21:48
- - kwisp   Kagami, чем собираете то? gcc 4.3.2 оч странно 3...   13.5.2009, 21:54
|- - BRE   Цитата(kwisp @ 13.5.2009, 22:54) Kagami, ...   13.5.2009, 21:57
- - ViGOur   VS 2003 и 2005 - все в порядке.   13.5.2009, 21:59
- - kwisp   Цитата(BRE @ 13.5.2009, 22:57) Странно у ...   13.5.2009, 22:19
|- - BRE   Цитата(kwisp @ 13.5.2009, 23:19) Цитата(B...   14.5.2009, 8:00
- - Litkevich Yuriy   выходит код не соответсвует современному стандарту...   13.5.2009, 23:35
- - kwisp   Цитата(Litkevich Yuriy @ 14.5.2009, 0:35)...   14.5.2009, 8:15
- - Влад   Не будет оно ок даже на *.c. Потому что код не соо...   14.5.2009, 12:15
- - Litkevich Yuriy   если скомпиленой проге (на виндовозе) передать как...   14.5.2009, 12:44
|- - AD   Скомпилировал на Visual Studio 6.0! Прикольный...   14.5.2009, 13:48
- - kwisp   Влад, проверяли или утверждение голословное? я ут...   14.5.2009, 13:59
|- - AD   Я думаю, что любителям языков АПЛ такого рода код ...   14.5.2009, 14:34
- - Влад   Цитата(kwisp @ 14.5.2009, 14:59) Влад, п...   14.5.2009, 17:48
- - kwisp   Цитата(Влад @ 14.5.2009, 18:48) GCC 4.3 G...   14.5.2009, 18:00
- - Kagami   После смены расширения файла на .c все скомпилиров...   14.5.2009, 18:43
- - Влад   Хм, но ведь волшебные ключики -pedantic и -pedanti...   15.5.2009, 9:37
- - kwisp   не указал это верно. вот сейчас указал и gcc3 и g...   15.5.2009, 10:23
- - Влад   Гм. Любопытно...... Где ж собака то порылась? Раск...   15.5.2009, 15:25
|- - BRE   Цитата(Влад @ 15.5.2009, 16:25) Гм. Любоп...   15.5.2009, 15:35
- - Влад   Ну, это неспортивно Скомпилировать и собрать, изм...   15.5.2009, 16:29
|- - BRE   Цитата(Влад @ 15.5.2009, 17:29) Ну, это н...   15.5.2009, 16:34
- - Litkevich Yuriy   Цитата(BRE @ 15.5.2009, 20:34) Что тебя н...   15.5.2009, 16:48
|- - BRE   Цитата(Litkevich Yuriy @ 15.5.2009, 17:48...   15.5.2009, 17:29
- - Влад   Цитата(BRE @ 15.5.2009, 17:34) Так он и т...   15.5.2009, 17:08
|- - Kagami   Цитата(Влад @ 15.5.2009, 18:08) Вот, напр...   15.5.2009, 19:12
|- - Влад   Цитата(Kagami @ 15.5.2009, 20:12) Английс...   15.5.2009, 21:10
- - kwisp   Цитата(BRE @ 15.5.2009, 18:29) Если завтр...   15.5.2009, 20:02
- - ViGOur   Цитата(Влад @ 15.5.2009, 18:08) Вот, напр...   15.5.2009, 21:42
- - kwisp   Цитата(Litkevich Yuriy @ 15.5.2009, 17:48...   15.5.2009, 22:05
- - Litkevich Yuriy   Цитата(kwisp @ 16.5.2009, 2:05) но что то...   15.5.2009, 22:30
- - molchanoviv   Цитатая вообще тему создавал с умыслом расковырять...   15.5.2009, 22:34
- - DmP   Кому лень собирать, как мне, может сразу посмотрет...   16.5.2009, 17:07


Ответить в данную темуНачать новую тему
Теги
Нет тегов для показа


5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.1.2025, 10:31