Re[6]: Как пройти собеседование в Яндекс
От: smeeld  
Дата: 09.01.14 13:54
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Однако формат %d ожидает целочисленного аргумента, а не указателя. Нормальные компиляторы про это в курсе, и умеют проверять соответствие формата printf'а переданным аргументам (в пределах разумного, конечно; если формат printf'а задается не строковым литералом, то компилятор, конечно, не сможет понять, что написано в формате, и предупрежденик выдавать не бурет).


А число (int*)2+3 это не указатель, это просто число т.е 0x000Е.
Если int* m=(int*)2+3 то директива %d в printf("%d",m);
заставляет компилятор рассматривать m как переменную, содержащую число и выводить его.
Варнинги выводятся если задано -Wall, но вышеприведённый пример работает и выдаёт 14.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.