Форум программистов, компьютерный форум CyberForum.ru

Зачем компилятору что-то упорядочивать после вычисления второго операнда логического "или"? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать на базе класса с реализацией очереди клас потомок — кольцевая очередь http://www.cyberforum.ru/cpp-beginners/thread1242736.html
Доброго времени суток. Я хотел создать на базе класса с реализацией очереди клас потомок - кольцевая очередь. Исходник: #include <iostream> #include <cstdlib> #include <time.h> using namespace std; class Queue{ protected:
C++ Как реализовать взаимодействие классов в игре "Змейка" Всем привет. Я пишу змейку и у меня следующий вопрос. У меня есть несколько классов Game, Snake, Block, Food. Каждый класс в отдельном файле. Тело змейки состоит из блоков, следовательно нужен массив объектов класса Block, который будет обрабатываться в классе Snake, также начальные значения этого массива будут инициализироваться в классе Game. В Game также будут инициализироваться некоторые... http://www.cyberforum.ru/cpp-beginners/thread1242714.html
C++ Транспонирование матрицы - Проблема возникает в резервировании места под новую матрицу
Здравствуйте. Решаю классическую задачу. Страуструп в книге задал матричный вариант. А что если векторный? Например: 1 2 3 4 5 6 7 8 9 сделать так: 1 5 7 2 6 8 3 _ 9
Одновременная блокировка/разблокировка функционала программы C++
Прошу прощения за столь изворотливый заголовок темы. Опишу суть проблемы. Разрабатываю программу для работы с электронными токенами. В программе присутствуют два потока: один предназначен для выполнения основного функционала (интерпретация команд пользователя), другой - для отслеживания событий в слотах. Функционал программы в отсутствие токена ограничен. Для контроля за функционалом я...
C++ Обобщенная функция перевода строки в число http://www.cyberforum.ru/cpp-beginners/thread1242686.html
В книге "С++. Сборник рецептов" нашел обобщенную функцию преобразования строки в число: #include <iostream> #include <sstream> #include <conio.h> using namespace std; template<typename T> T strNum(const string& str) {
C++ Метод хорд - проверить корректность реализации кода Приветствую, форумчане. Хочу обратиться к вам за помощью, вот еле написала программу для метода хорд, методом шары если честно, так как сама не сильна в программировании и код был соединен из двух других, так как мне нужно не просто решение, но и подсчет числа итерации. Само собой тут что то не работает, но хоть компилируется, хотя дальше ввода данных дело не идет. Так вот, проверьте пожалуйста,... подробнее

Показать сообщение отдельно
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
15.08.2014, 05:20     Зачем компилятору что-то упорядочивать после вычисления второго операнда логического "или"?
Если второе выражение выполняется (будет выполняться), то все вычисления и побочные эффекты, связанные с первым выражением, следуют перед всеми вычислениями и побочными эффектами, связанными со вторым выражением.

Т.е. гарантируется, что все, что связано с первым выражением гарантировано будет выполнено до выполнения второго и порядок действий не может быть изменен компилятором.
Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
int a = 41;
 
bool f() {
    ++a;
    return false;
}
 
int main() {
    // Гарантируется, что на момент выичсления правого выражения
    // 'a' получит новое значение, после его изменения функцией f.        
    if (f() || a == 42) {
        std::cout << "Ok" << std::endl;
    }
}
Наверное, можно придумать более реалистичный пример.
 
Текущее время: 13:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru