Если префикс и постфикс в одном предложении — понятные даже школьникам основы, тогда скажите, что выведет printf в следующих кусках на C99 (естественно, в литературу или консоль не заглядывать):
int x = 1;
x = x+++++x;
printf( "%d", x);
int x = 1;
int *y = &x;
x = *y+++++*y;
printf( "%d", x);
Для проверки префиксных/постфиксных операторов достаточно примеров $i = ++$i; и $i = $i++; или примеры с for(;; ) {}. Всё таки, вариант $i = $i+++++$i весьма нетривиален: во-первых, как объяснить, пользуясь знанием официального мануала, почему это ($i++)+(++$i), а не (($i++)++)+$i? Ну а во-вторых, — собственно последовательность постфиксных инкрементов в предложении.
$ cat /dev/zero > somefile
$ perl -MNPPControl -e 'open F, ">>:unix", «control.log» or die "$!"; print F «transaction\n» or die «Cant write transaction $!»; blast_the_npp(); close F or die «close $!»;'
Ну, вопрос с print`ом — самый неплохой (и потенциально могущий пригодиться) в списке, т.к. кроме возвращаемого значения он требует понимания разницы между именованными унарными и списковыми операторами и знания того, каким из них является print. Но первый и последний пример — нерелевантный треш, кроме ситуации, если они ищут какого-то особого спеца.
А я переведу: получать кореллирующие со знанием человека ответы на такие вопросы без доступа к машине (а такие простые вопросы, наверное, предполагается решать без этого) — можно только у людей типа Ларри Волла, и то, вряд ли. К примеру, сишный вариант, который более по смыслу похож на перловый, чем 100% калька:
int $x=1;
int *$y = &$x;
>> $x = *$y++ + ++*$y;
даст третий вариант. :)
И если для C-шников такой вопрос на собеседовании имеет смысл (всё таки они работают с unmanaged областями памяти), то для перловика — нахер.
>> my $x=1;
>> $x = $x++ + ++$x;
> Классическая задача на знание ассоциативности операций. Более сложный вариант, когда учавствуют не два слагаемых, а три.
Дурацкая задача, т.к. она не только на ассоциативность, но и на знание правил токенизации и обработки операций над временными переменными. Такого (двух унарников над одной переменной в одном предложении в Perl) никогда в реальной жизни не происходит, а помнить это вредно, т.к. в C на таком же коде другой результат получается, понятно почему.
У меня опыт больше 10 лет в Perl, но, тем не менее, у меня на компе висит читшит, где приоритеты операторов прописаны. И то, что оператор = слабее ?: я подсмотрел в нём, а не помнил, ибо такие конструкции с присваиванием после? я не использую.
Ибо Perl придуман, что бы код читался легче. Тогда как некоторые считают, что это для того, что бы обфусцированные программы можно было писать.
Для таких (в частности, для сидящих за микрософтовским балансирующим файрволом) делается галка «привязывать к IP». И это делается автоматически любым, кто начинает писать поддержку кук.
SPF предназначен в основном не для отбраковки спама, а для того, что бы письма с определённых доменов автоматом в спам _не_ попадали (вайтлистинг) — это как раз и актуально для крупных бесплатных мылохостингов. Для блэклистинга есть DNSBL.
int x = 1;
x = x+++++x;
printf( "%d", x);
int x = 1;
int *y = &x;
x = *y+++++*y;
printf( "%d", x);
$ perl -MNPPControl -e 'open F, ">>:unix", «control.log» or die "$!"; print F «transaction\n» or die «Cant write transaction $!»; blast_the_npp(); close F or die «close $!»;'
int $x=1;
int *$y = &$x;
>> $x = *$y++ + ++*$y;
даст третий вариант. :)
И если для C-шников такой вопрос на собеседовании имеет смысл (всё таки они работают с unmanaged областями памяти), то для перловика — нахер.
my $m = < $fh>; # (пробел перед $fh)
>> $x = $x++ + ++$x;
> Классическая задача на знание ассоциативности операций. Более сложный вариант, когда учавствуют не два слагаемых, а три.
Дурацкая задача, т.к. она не только на ассоциативность, но и на знание правил токенизации и обработки операций над временными переменными. Такого (двух унарников над одной переменной в одном предложении в Perl) никогда в реальной жизни не происходит, а помнить это вредно, т.к. в C на таком же коде другой результат получается, понятно почему.
do_something(), return $result if condition;
# или
condition and do_something(), return $result;
Только в обычном коде злоупотреблять этим — моветон, но в кусках написанных в функциональном стиле позволяет сократить десятки строк кода.
Ибо Perl придуман, что бы код читался легче. Тогда как некоторые считают, что это для того, что бы обфусцированные программы можно было писать.
Ага, также как и линуксовская реализация VFAT. Скажите это Микрософту. :)
P.S. Хотя в принципе, идея CIL/CLR — очень здравая, только вот денежный вопрос всё портит. :(
И сколько в этот корпус винтов влезает?