1. Си / Говнокод #24140

    +5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    #include <stdio.h>
    
    struct struct2 {
    	struct struct1 a ;
    } ;
    
    struct struct1 {
    	struct struct2 a ;
    	int b ;
    } ;
    
    
    int main(){
    	struct struct1 a ;
    	scanf ( "%d" , &a.a.a.b ) ;
    	printf ( "%d" , a.b ) ;
    	return 0;
    }

    Все, кроме TCC для C4droid, отказались это компилировать, не пробовал только Visual Studio

    Запостил: yet_another_one_shit, 17 Апреля 2018

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

    • Хотел наебнуть компилятор, не вышло.
      Ответить
    • А что ТитовСС? Навернулся? Просто тут ничего осмысленного не должно получиться...
      Ответить
      • Нет, он спросил у меня число, и потом вывел его.
        Ответить
        • Странно немного... Может, он переставил int в начало, поэтому бесконечно вложенная структура в вычислении смещения не учитывалась?
          Хотя все равно на стеке он как-то ее выделил, так что баг.
          Ответить
          • лол, ТСС выдает:
            sizeof ( a ) == 4
            sizeof ( a.a ) == 0
            sizeof ( a.a.a ) == 4
            Ответить
            • А дальше тенденция сохраняется?
              Ответить
            • Интересно, можно ли пройти циклом по этому говну ?
              Ответить
              • Сам спросил, сам ответил.
                Бесконечное сыкло:
                while(1) {
                        printf ( "%d" , sizeof ( *i ) ) ;
                        i = &i->a.a ;
                 }

                Хреначит через одну
                Ответить
                • Ну это просто константа выводится в цикле... непонятно, что происходит с i. Должно не меняться, по идее?

                  Тут вообще непонятно, если я напишу:
                  struct struct2 {
                          // Ошибки, по-видимому, не выдается
                  	struct struct1 a ;
                  } ; // Определение структуры завершено, ее размер должен быть известен. Но он же не может быть известен!
                  
                  // Сколько байт выделяется? или здесь ошибка?
                  struct struct2 a ;

                  В общем, по-видимому, бага в том, что можно выделить поле с типом неопределенной структуры (а не указатель/функцию/т.п.), и оно будет 0 байт.
                  Ответить
                  • Будут 2 вложенные друг в друга структуры с размером 0.
                    Наверное, Фабрис Беллар просто упоровси :)
                    Ответить
        • Для windows TCC выдаёт ту же поебень.
          Ответить

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