Няшная / Говнокод #28058 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
#include <stdio.h>

int main(void)
{
	(
		*********************
		**  **     ** ***** *
		* ** * **** ** *** **
		* ** * **** *** * ***
		* ** * **** **** ****
		* ** * **** *** * ***
		* ** **    *** *** **
		*********************
	printf)("pidor");
}

Запостил: kcalbCube kcalbCube, (Updated )

Комментарии (13) RSS

  • Эм, указатели на функции можно разадресовывать?
    Ответить
    • да, но это не имеет эффекта. **********a то же самое что a
      Ответить
    • В Си значения типа ЭфункцияЭ эквивалентно Эуказатель на функциюЭ (за исключением sizeof, ЕМНИП), разыменовав Эуказатель на функциюЭ получим то же самое тип, в отличие от остальных типов указателей.

      Конь систентно!
      Ответить
      • Оно вроде разлагается к указателю, как массивы, от любого чиха, а звёздочки запихивают его обратно.

        То есть *printf сначала превращает функцию в указатель, а затем обратно в функцию.

        EDIT: Ну да:
        6.3.2.1/4
        A function designator is an expression that has function type. Except when it is the operand of the sizeof operator, the _Alignof operator, or the unary & operator, a function designator with type ''function returning type'' is converted to an expression that has type ''pointer to function returning type''.

        6.5.3.2/4
        The unary * operator denotes indirection. If the operand points to a function, the result is a function designator; if it points to an object, the result is an lvalue designating the object. If the operand has type ''pointer to type'', the result has type ''type''. If an invalid value has been assigned to the pointer, the behavior of the unary * operator is undefined
        Ответить
          • Видимо, потому что писали и p = function, и p = &function, вот чтобы было можно и так, и так писать.

            Вот бы и с амперсандами так тоже можно было.
            Ответить
      • Если очень сильно хочешь разыменования указатель на функцию, то кастани сначала в void*, а потом балуйся.
        Ответить
        • Не надо так делать. На многих платформах это плохо заканчивается: где-то волшебные биты, где-то адресные пространства разделены.
          Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8