Занятная конструкция в C (:))

Модератор: Модераторы разделов

Аватара пользователя
brazhe
Сообщения: 89

Занятная конструкция в C

Сообщение brazhe »

Пишу программу. Написал конструкцию, которая мне показалась забавной:

Код: Выделить всё

*++p++ = '.';


То есть увеличить указатель p на единицу, потом взять значение, приравнять к '.', а потом ещё увеличть на единицу. :)
Спасибо сказали:
Аватара пользователя
demongloom
Сообщения: 454
Статус: Добрый Демон

Re: Занятная конструкция в C

Сообщение demongloom »

:blink: И где это применять? Если вы любитель перла, то так и скажите и не морочьте голову.
Если жизнь твоя порвется, тебе новую сошьют.
Спасибо сказали:
Аватара пользователя
DW
Бывший модератор
Сообщения: 662
Статус: и это еще не все или ничего.

Re: Занятная конструкция в C

Сообщение DW »

:). класс. кстати, можно начать такое на форум выкладывать, наверняка у многих могут быть или собрания подобных вещей или просто по ходу работы могут появляться :) .
подумал -> выпил -> подумал -> ... но недавно врачи запретили пить.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Занятная конструкция в C

Сообщение elide »

ага... один раз под пивом вот такое соорудил. на следующий день появилось настойчивое желание пойти сделать томографию мозга.... на всякий случай...

Код: Выделить всё

bool func(){
   bool flag=false;
   .....поскипано. здесь flag меняется........
   if(true==flag)
      return true;
   else
      return false;
}
слава роботам!
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Занятная конструкция в C

Сообщение t.t »

elide, ну, это скорее противоположный случай :) А у меня тоже что-то прикольное было, когда я своим стьюдентам примерчики писал; найду -- кину.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
brazhe
Сообщения: 89

Re: Занятная конструкция в C

Сообщение brazhe »

Перл вообще не знаю. А та штука не работает. Просто она выглядела красиво. Ну, и знаете как оно бывает в конце рабочего дня ... :wacko:
Спасибо сказали:
Аватара пользователя
demongloom
Сообщения: 454
Статус: Добрый Демон

Re: Занятная конструкция в C

Сообщение demongloom »

Сами знаем. А вообще я заметил что если взять старые исходники своих программ, написанных скажем минимум пол года назад, то такую гору ошибок, лишнего и прочего мусора можно найти.
Если жизнь твоя порвется, тебе новую сошьют.
Спасибо сказали:
Аватара пользователя
oav
Бывший модератор
Сообщения: 296

Re: Занятная конструкция в C

Сообщение oav »

Вообще такой код - evil ибо не читается. Но если уж пошла такая пьянка пару кусочков из samples на lambda library (правда С++):

Добавляет 1 к каждому элементу в двумерном массиве :)

Код: Выделить всё

using boost::lambda;
...


int a[5][10]; int i;
for_each(a, a+5,
  for_loop(var(i)=0, var(i)<10, ++var(i),
           _1[var(i)] += 1));  


или вот этот: пишет что элемент "ноль" или "один" или "другой и его значение" :))

Код: Выделить всё

std::for_each(v.begin(), v.end(),
  (
    switch_statement(
      _1,
      case_statement<0>(std::cout << constant("zero")),
      case_statement<1>(std::cout << constant("one")),
      default_statement(cout << constant("other: ") << _1)
    ),
    cout << constant("\n")
  )
);


а если привести примеры из mpl....)))))) короче все это изврат, пишите простые, понятные и качественные коды и будет всем шассстье
Спасибо сказали:
Аватара пользователя
Golden
Сообщения: 163
ОС: Ubuntu Linux 7.10

Re: Занятная конструкция в C

Сообщение Golden »

Не люблю!
Выглядят они круто, как и все крутое ("крутыми бывают лишь яйца" - Шевчук), но когда с подобными конструкциями начинаешь работать - число глюков возрастает неимоверно. Лучше придерживаться принципа "Один оператор в строке". Все остальное, ИМХО, для распальцовки .
Спасибо сказали:
Аватара пользователя
DW
Бывший модератор
Сообщения: 662
Статус: и это еще не все или ничего.

Re: Занятная конструкция в C

Сообщение DW »

t Golden:
так ведь и пишут про блины :) .
подумал -> выпил -> подумал -> ... но недавно врачи запретили пить.
Спасибо сказали:
Аватара пользователя
Alejandro
Сообщения: 98
Статус: Наследник "Астарота"

Re: Занятная конструкция в C

Сообщение Alejandro »

(brazhe @ Суббота, 19 Февраля 2005, 20:40) писал(а):Пишу программу. Написал конструкцию, которая мне показалась забавной:

Код: Выделить всё

*++p++ = '.';


То есть увеличить указатель p на единицу, потом взять значение, приравнять к '.', а потом ещё увеличть на единицу. :)


Кхм.....
Сам-то понял, что написал? :blink:
И где такую травку только достают? ;)
Оно ж работать не будет ;)
Follow the white Rabbit!
Спасибо сказали:
Аватара пользователя
demongloom
Сообщения: 454
Статус: Добрый Демон

Re: Занятная конструкция в C

Сообщение demongloom »

Вроде "бритва оккама" называеться, ну что самое простое решение задачи будет самым верным.
Если жизнь твоя порвется, тебе новую сошьют.
Спасибо сказали:
Аватара пользователя
Sparky
Сообщения: 604
Статус: core dumped
ОС: Plan 9

Re: Занятная конструкция в C

Сообщение Sparky »

Видел где то в инете:
как пишет русский программист

Код: Выделить всё

bool func1();
bool func2()
{
         bool res;
         return  res =  func1();
}

как пишет индус:

Код: Выделить всё

bool func1();
bool func2()
{
   bool res;
    if((res = func1()) != false)
   {
        return true;
   } else {
        return false;
     }
}

:megalol:
Блог
--------------------

GCS/M/MU/P/IT/E d- s: a- C++(+++) UBL++ P->-- L+++$ E- W+++$ N* o? K? w>--
O M-@ V- PS@ PE+ Y+ PGP+ t 5 X R* tv-->- b++ DI? D>+ G e+(++) h--- r+ y++
Спасибо сказали:
Аватара пользователя
demongloom
Сообщения: 454
Статус: Добрый Демон

Re: Занятная конструкция в C

Сообщение demongloom »

Вообще то достаточно побыть на уроке программирования в школе в которой я учился.
Такого кода лучше программистам (даже начинающим, но программирующим) лучше не показывать - можно со смеху лечь и не встать. Такие перлы ученики в программах писали. Я между компьютеров только ползком и передвигался.
Если жизнь твоя порвется, тебе новую сошьют.
Спасибо сказали:
Аватара пользователя
brazhe
Сообщения: 89

Re: Занятная конструкция в C

Сообщение brazhe »

2demongloom

Просим, просим ... :)
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Занятная конструкция в C

Сообщение t.t »

(Alejandro @ Вторник, 22 Февраля 2005, 1:05) писал(а):Кхм.....
Сам-то понял, что написал? 
И где такую травку только достают?
Оно ж работать не будет
Она уже написал, что не будет. Но вообще да, сложно понять, как такое можно придумать. ;)
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Занятная конструкция в C

Сообщение elide »

почему же сложно понять... это просто еще одна вариация на тему p+= p++ + ++p;
слава роботам!
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Занятная конструкция в C

Сообщение t.t »

(elide @ Среда, 23 Февраля 2005, 14:01) писал(а):почему же сложно понять... это просто еще одна вариация на тему p+= p++ + ++p;
Я имею ввиду мспользование инкремента слева от знака равенства.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: Занятная конструкция в C

Сообщение madskull »

Представлю не конструкцию, но рассказку.

От сложного к простому или Русские простых путей не ищут

Начал я тут опять в MUD играть. И начал обвешивать свой любимый консольный клиент mmc скриптами. И захотелось мне, чтобы трёп игроков и другая неважная инфа сыпалась в другое окно. Прикинул: это же чистый клиент-сервер!
Отлично, за пять минут был написан TCP сервер, еще минут десять-пятнадцать ушло на написаниие и настройку фильтра и клиента. Все замечательно, сервер слушает на определенном порту и вываливает на консоль все, что ему пришлет клиент. Плюс, можно сервер вешать вообще на другой комп (благо, что их у меня на рабочем месте два, не считая ноута).

Поигравшись пару дней, понял, что не очень это удобно: сервер надо стартовать до игры. К тому же, и на другой комп смотреть неудобно.
Думаем дальше... О! Пайпы! Немного переделываем: клиент пишет в именованную трубу, сервер (точнее, уже просто монитор) считывает из нее и опять-таки вываливает все добро на экран.
Через некоторое время понял, что это тоже не то. Монитор падает, если выходишь из клиента. Опять неудобно...

Короче, после некоторый мучений мне пришла в голову простая до безобразия идея, которая должна была бы быть первой: клиент пишет в ФАЙЛ, а с ролью монитора прекрасно справится tail -f!

И стоило ли столько мучиться? :)

Мораль: в никсе практически всё уже сделали, надо только подумать, как это использовать...
ArchLinux / IceWM
Спасибо сказали:
Fixord
Сообщения: 3

Re: Занятная конструкция в C

Сообщение Fixord »

:blink: Если тебе надо увеличить на 2 то используй логический оператор AND!

i++ AND i++
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Занятная конструкция в C

Сообщение t.t »

(Fixord @ Воскресенье, 03 Апреля 2005, 12:40) писал(а):Если тебе надо увеличить на 2 то используй логический оператор AND!
i++ AND i++
Это вообще о чём?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Ослик ИА
Сообщения: 261

Re: Занятная конструкция в C

Сообщение Ослик ИА »

это очередной прикол :megalol:
спасибо за внимание
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Занятная конструкция в C

Сообщение t.t »

(Ослик ИА @ Воскресенье, 03 Апреля 2005, 18:22) писал(а):это очередной прикол
Первоапрельский? :D Я так и подумал. :D
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
alphex_kaanoken
Сообщения: 30

Re: Занятная конструкция в C

Сообщение alphex_kaanoken »

за такие выражения надо бить по рукам больно линейкой, посколько в стандарте это четко не описано и то что из этого кода получится зависит от реализации. Сам с таким сталкивался - теперь осторожней. Так что отучать от такого надо. А за повторное применение бить по рукам.
Don't try to look deeper, just look deeper than deep. ©
Спасибо сказали:
Аватара пользователя
brazhe
Сообщения: 89

Re: Занятная конструкция в C

Сообщение brazhe »

Да уж, alphex, опасно на ЛОР образцы кода выкладывать :)
Спасибо сказали:
Аватара пользователя
demongloom
Сообщения: 454
Статус: Добрый Демон

Re: Занятная конструкция в C

Сообщение demongloom »

на лоре кого хочешь заклюют досмерти, там зубры -- покруче бога будут, так что достанеться даже линусу если он туда ядра код запостит.
Если жизнь твоя порвется, тебе новую сошьют.
Спасибо сказали:
Аватара пользователя
brazhe
Сообщения: 89

Re: Занятная конструкция в C

Сообщение brazhe »

Ага, то-то он и не постит :)
Спасибо сказали:
Аватара пользователя
demongloom
Сообщения: 454
Статус: Добрый Демон

Re: Занятная конструкция в C

Сообщение demongloom »

у него кернел.орг есть.
а мс должен зарегать домен кернел.в.морг
Если жизнь твоя порвется, тебе новую сошьют.
Спасибо сказали:
Аватара пользователя
brazhe
Сообщения: 89

Re: Занятная конструкция в C

Сообщение brazhe »

А что, там в ядре все настолько плохо?
Спасибо сказали: