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

    −51

    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
    19. 19
    20. 20
    21. 21
    22. 22
    #include <stddef.h>
    #define H 0.2
    #define A 0
    #define B 2
    void main( void ) 
    {
    	const double h = 0.2;
    	const int b = 2;
    	const int a = 0;
    	
    	const size_t size1 = (b - a) / h;
    	double arr1[size1] = { 1 }; // Вы видете тут VLA? А он есть
    	
    	const size_t size2 = (B - A) / H;
    	double arr2[size2] = { 1 }; // И тут есть
    	
    	double arr3[(const size_t)((b - a) / h)] = { 1 }; // И тут тоже
    	
    	double arr4[(const size_t)((B - A) / H)] = { 1 }; // И здесь тоже
    	
    	double arr5[10] = { 1 }; // Ну хоть тут нет, слава Селестии
    }

    Такие дела. Без инициализатора, конечно же, работает. Но мне интересно, почему он это именует variable-sized object? Везде константы.

    Запостил: a1batross, 06 Ноября 2016

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

    • показать все, что скрытоВсегда считал, что "PHP" - элитный язык, а "C", "C++", "Delphi", "Java" и прочая хуета - удел вонючих нигеров из Гарлема.
      Ответить
    • > double arr5[10] = { 1 };
      Ты точно хотел проинициализировать их как {1, 0, 0, 0, ...}?
      Ответить
    • Потому что const - не константа, а всего лишь переменная, которую можно заполнить только в инициализаторе. И её значение, внезапно, может от аргументов функции зависеть. Поэтому const'ы нельзя юзать в метках свичей и размерах массивов (если только у тебя не C99 или расширение конпелятора с variable-length array). И компилятор не обязан доказывать, что данная 'константа' не зависит от каких-то переменных...

      Хочешь настоящую константу - юзай enum.
      Ответить
      • З.Ы. Ну или подстановку через #define, но аккуратно.
        Ответить
      • Разве дело не в дабле? Хз как в сишке, а в плюсах так http://ideone.com/N2ZM0n
        Ответить
        • А в сишке даже вот так http://ideone.com/BvGLYC
          Ответить
          • Ну хуй знает http://ideone.com/fDAqGj
            Сишка - кал.
            Ответить
            • Вы только гляньте на это говно. Один sizeof у них константный, а другой - не константный.
              http://ideone.com/IYUS6z
              http://ideone.com/VKok5k

              НУ ТУПЫЫЫЫЕЕЕ
              Ответить
              • Конечно

                А как блядь он посчитает тебе значение?

                Скажи блядь спасибо что вообще есть VLA.

                В C89 и их не было. Там, сука, любой sizeof был константный.
                Ответить
                • Нахуй мне вла не нужен, как и вся сишочка. Рантаймный sizeof - это пиздец.
                  Ответить
                  • VLA вообще пиздец. При аккуратном их использовании можно и чужой стекфрейм потрогать, и адрес возврата подменить.
                    Ответить
    • >> слава Селестии

      Принцессе Коловрат же
      Ответить

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