ЙажаСценарий / Говнокод #27909 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
var x1: number;
x1 = value;
(x1) = value;

чем одна строка отличается от другой?

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

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

  • хороший программист даже в новый год правильно ответит
    Ответить
  • int x = 42;
    int x(42);
    int x{42};
    Чем одна строка отличается от другой? Хороший программист даже в новый год правильно ответит.
    Ответить
    • В случае intа ничем практически.
      Ответить
      • Кстати в вижалси нельзя написать
        Petushok petya{.grebeshok=42}

        потому что это C99, а VC++ его не умеет. Нужно городить Пете конструктор
        Ответить
        • > а VC++ его не умеет
          Уже устаревшая информация. Раньше действительно не умел, но в новых версиях — с 2019-й, кажется — завезли вполне современный C17 (включается в настройках проекта, вкладка «C/C++» -> «Language»):
          #include <stdlib.h>
          #include <stdio.h>
          
          typedef struct {
              int foo;
              int grebeshok;
          } Petushok;
          
          int main()
          {
              Petushok petya = { .grebeshok = 42 };
              printf("%d\n", petya.grebeshok);  // 42
              return EXIT_SUCCESS;
          }
          Ответить
          • у меня 2017-й

            твой пример не честный, это сишный код. В нем всё умеется

            Покажи, как ты совместил его с C++ кодом в одном .cpp файле
            Ответить
            • А в крестах это и не должно работать. Если работает -- это отсебятина конкретного конпелятора.

              А, в с++20 завезли.
              Ответить
            • Переходи на «2022», там всё работает.

              > твой пример не честный, это сишный код. В нем всё умеется
              Так а причём тут «C99»? В «C++» designated initializers — о которых ты пишешь — завезли только в «C++20», до этого стандарта в крестах так писать было нельзя.

              Ну и да, «VS 2022» поддерживает «C++20», в нём можно спокойно писать:
              struct IFace {
                  bool cond0;
                  std::optional<bool> cond1 = std::nullopt;
              };
              
              int main()
              {
                  const IFace a{ .cond0 = false, .cond1 = true, };
              
                  std::printf("%d\n%d\n%d\n", a.cond0, !a.cond1.has_value(), static_cast<bool>(a.cond1));
              
                  return EXIT_SUCCESS;
              }
              Ответить
              • а, ок, я реально так затупил в новый год.

                В крестах и не должно раболтать до 20
                Ответить
  • я пришел открыть вам всем глаза: (x) возвращает ссылку на переменную 🙂
    // parentheses, the contained expression is reference
    (x1) = value;
    Ответить
  • в плюсах decltype(x) и decltype((x)) тоже отличаются, второй вариант возвращает ссылку, получается джаваскрипт украли столь гениальную идею
    Ответить

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

Где здесь C++, guest?!

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


    8