Порядок вычисления аргументов
От: gbt Россия  
Дата: 25.11.05 02:33
Оценка:
Определено ли, что выведет на экран следующая строка кода ?

char *s;
printf(s, 1, s = "%d %s %d", 2);


В стандарте нашел следующий пункт, но не уверен...

The order of evaluation of arguments is unspecified. All side effects of argument expression evaluations
take effect before the function is entered. The order of evaluation of the postfix expression and the argument
expression list is unspecified.


К чему это все. Прочитал в фидо восторженные возгласы по поводу следующего quine из книги Генpи Уоpен мл., "Алгоpитмические тpюки для пpогpаммистов", СПБ, 2003:

main(a){printf(a, 34, a="main(a){printf(a, 34, a=%c%s%c,34);}", 34);}


Значит на самом деле это UB ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.