Вопросы с тегом «language-lawyer»

Для вопросов о тонкостях формальных или авторитетных спецификаций языков программирования и сред.

8
C ++ 11 представил стандартизированную модель памяти. Что это значит? И как это повлияет на программирование на C ++?
C ++ 11 представил стандартизированную модель памяти, но что именно это означает? И как это повлияет на программирование на C ++? В этой статье ( Гэвин Кларк, которая цитирует Херба Саттера ) говорится, что Модель памяти означает, что код C ++ теперь имеет стандартизированную библиотеку для вызова независимо от того, …

5
В CSS Flexbox, почему нет свойств «justify-items» и «justify-self»?
Рассмотрим основную ось и поперечную ось гибкого контейнера: Источник: W3C Для выравнивания гибких элементов вдоль главной оси есть одно свойство: justify-content Для выравнивания изгибаемых элементов вдоль поперечной оси есть три свойства: align-content align-items align-self На изображении выше основная ось горизонтальная, а поперечная ось вертикальная. Это направления по умолчанию для гибкого …


20
int a [] = {1,2,}; Странная запятая разрешена. Любая конкретная причина?
Возможно, я не с этой планеты, но мне кажется, что синтаксическая ошибка должна быть следующей: int a[] = {1,2,}; //extra comma in the end Но это не так. Я был удивлен , когда этот код скомпилирован на Visual Studio, но я научился не доверять MSVC компилятор, насколько правила C ++ …


12
Является ли main действительным идентификатором Java?
Один из моих детей учится на Java в старшей школе, и у него было одно из его испытаний: Что из следующего является допустимым идентификатором в Java? а. 123java б. main с. java1234 д. {abce е. )whoot Он ответил б и ошибся. Я посмотрел на этот вопрос и утверждал , что …

11
Почему f (i = -1, i = -1) неопределенное поведение?
Я читал о порядке нарушений оценки , и они приводят пример, который озадачивает меня. 1) Если побочный эффект на скалярный объект не секвенирован относительно другого побочного эффекта на тот же скалярный объект, поведение не определено. // snip f(i = -1, i = -1); // undefined behavior В этом контексте iэто …

8
Допустимый, но бесполезный синтаксис в switch-case?
Через небольшую опечатку я случайно нашел эту конструкцию: int main(void) { char foo = 'c'; switch(foo) { printf("Cant Touch This\n"); // This line is Unreachable case 'a': printf("A\n"); break; case 'b': printf("B\n"); break; case 'c': printf("C\n"); break; case 'd': printf("D\n"); break; } return 0; } Кажется, что printfв верхней части …


6
С ++ 11, 14, 17 или 20 вводит стандартную константу для пи?
Существует довольно глупая проблема с числом пи в C и C ++. Насколько я знаю, M_PIопределено в math.hне требуется ни одного стандарта. Новые стандарты C ++ ввел много сложных математических в стандартной библиотеке - гиперболических функций, std::hermiteи std::cyl_bessel_i, различных генераторов случайных чисел и так далее , и так далее. Приносил …

4
Правильно ли определена операция «ложь <истина»?
Определяет ли спецификация C ++: существование оператора «меньше чем» для логических параметров, и если да, результат перестановок с 4 параметрами? Другими словами, определяются ли результаты следующих операций спецификацией? false &lt; false false &lt; true true &lt; false true &lt; true На моей установке (Centos 7, gcc 4.8.2) приведенный ниже код …

8
Оптимизация «время (1);» в C ++ 0x
Обновлено, смотрите ниже! Я слышал и читал, что C ++ 0x позволяет компилятору напечатать «Hello» для следующего фрагмента #include &lt;iostream&gt; int main() { while(1) ; std::cout &lt;&lt; "Hello" &lt;&lt; std::endl; } По-видимому, это как-то связано с потоками и возможностями оптимизации. Мне кажется, что это может удивить многих людей, хотя. У …

1
Копирование / перемещение назначения в std :: vector :: erase () и std :: deque :: erase ()
В процессе ответа на другой вопрос я наткнулся на несколько иные формулировки для std::vector::erase()и std::deque::erase(). Вот что говорит C ++ 14 std::deque::erase( [deque.modifiers]/4-6выделение мое): Эффекты: ... Сложность: Количество вызовов к деструктору такое же, как и количество стертых элементов, но количество вызовов к оператору присваивания не более, чем меньшее количество элементов …

4
Инициализация нуля в C ++ - почему `b` в этой программе не инициализирован, а` a` инициализирован?
Согласно принятому (и единственному) ответу на этот вопрос переполнения стека , Определение конструктора с помощью MyTest() = default; вместо этого будет нулевая инициализация объекта. Тогда почему следующее, #include &lt;iostream&gt; struct foo { foo() = default; int a; }; struct bar { bar(); int b; }; bar::bar() = default; int main() …

3
Как этот кусок кода определяет размер массива без использования sizeof ()?
Проходя через несколько вопросов на собеседовании с C, я нашел вопрос о том, как найти размер массива в C без использования оператора sizeof, со следующим решением. Это работает, но я не могу понять, почему. #include &lt;stdio.h&gt; int main() { int a[] = {100, 200, 300, 400, 500}; int size = …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.