Запитання з тегом «language-lawyer»

Питання щодо тонкощів формальних чи авторитетних специфікацій мов програмування та середовищ.

8
C ++ 11 представив стандартизовану модель пам'яті. Що це означає? І як це вплине на програмування на C ++?
C ++ 11 представив стандартизовану модель пам'яті, але що це саме означає? І як це вплине на програмування на C ++? У цій статті (від Гевіна Кларка, який цитує Герба Саттера ) сказано, що: Модель пам'яті означає, що код C ++ тепер має стандартизовану бібліотеку для виклику незалежно від того, …

5
Чому у CSS Flexbox чому немає властивостей «виправдовувати елементи» та «виправдовувати-само»?
Розглянемо головну вісь і поперечну вісь гнучких контейнерів: Джерело: W3C Щоб вирівняти гнучкі елементи по головній осі, є одна властивість: justify-content Для вирівнювання гнучких елементів по поперечній осі є три властивості: align-content align-items align-self На зображенні вище головна вісь горизонтальна, а поперечна вісь - вертикальна. Це типові вказівки flex-контейнера. Однак …


20
int a [] = {1,2,}; Дивні коси дозволені. Якась конкретна причина?
Можливо, я не з цієї планети, але мені здається, що наступною має бути помилка синтаксису: int a[] = {1,2,}; //extra comma in the end Але це не так. Я був здивований , коли цей код скомпільовано на Visual Studio, але я навчився не довіряти MSVC компілятор, наскільки правила C ++ …


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

11
Чому f (i = -1, i = -1) невизначена поведінка?
Я читав про порядок порушень оцінювання , і вони дають приклад, який мене спантеличує. 1) Якщо побічний ефект на скалярний об'єкт не є послідовним щодо іншого побічного ефекту на той же скалярний об'єкт, поведінка не визначена. // snip f(i = -1, i = -1); // undefined behavior У цьому контексті …

8
Дійсний, але нікчемний синтаксис у випадку переключення?
Через невелику помилку я випадково знайшов цю конструкцію: 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вгорі switchтвердження є …


6
Чи вводить C ++ 11, 14, 17 або 20 стандартну константу для pi?
Існує досить нерозумна проблема з числом pi в 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 дозволяє компілятору надрукувати "Привіт" для наступного фрагмента #include &lt;iostream&gt; int main() { while(1) ; std::cout &lt;&lt; "Hello" &lt;&lt; std::endl; } Це, мабуть, має щось спільне з потоками та можливостями оптимізації. Мені здається, що це може здивувати багатьох людей. Хтось …

1
Скопіювати / перемістити завдання в std :: вектор :: 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 …

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.