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

const volatile - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Чтение данных из файла на примере программы http://www.cyberforum.ru/cpp-beginners/thread636819.html
У меня есть программа которая с клавы осуществляет ввод данных об автомобилях и вывод марку машины с наивысшей скоростью. Вот этот код: #include <iostream> #include <conio.h> #include <cstdlib> #include <locale.h> #include <string.h> using namespace std;
C++ Вставка символа через каждые 8 букв Вообщем есть строка ввида "6842318465134824" мне надо её превратить в "68423184-65134824". Вот и вопрос как вставить после 8 цифры этот знак '-'? думал я думал вот что получилось. char razdel(char str) { for (int i = 0; i < strlen(str); i++) http://www.cyberforum.ru/cpp-beginners/thread636665.html
C++ Не очевидное смещение к полям структуры
Доброе время суток! Столкнулся с непонятным мне вопросом... у меня есть структура: struct A { uint16_t x; uint32_t y; }
C++ Дайте задач
Здравствуйте! Изучаю я c++ уже больше 2 лет. Встречался с сортировками, поисками, хэш-таблицами, наследованием, virtual функциями, стэками, списками одно/дву связными, очередями, многопоточностью(совсем чуть-чуть), деревьями всякими, переопределением операторов, немного winapi - рисовал 3d щар с правильным освещением и еще можно что нить вспомнить =) так вот хотел летом написать всем...
C++ Указатели http://www.cyberforum.ru/cpp-beginners/thread636648.html
Здравствуйте! Так сложилось что я не понимаю как использовать указатели, всвязи с этим не могу двигаться дальше по изучению С++. ?: почему при объявлении указателя на integer, например int *p, далее в программе используеться переменная p без звёздочки? Что это значит?
C++ Русские буквы в консоли У меня прекрастно выводятся русские буквы в консоль, но если я ввожу русский текст в какуюту переменную, то вывести ее коректно не получается: #include "stdafx.h" #include <iostream> #include <string> #include <conio.h> using namespace std; подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16841 / 5262 / 323
Регистрация: 30.03.2009
Сообщений: 14,159
Записей в блоге: 26
13.08.2012, 19:42     const volatile
Цитата Сообщение от Avazart Посмотреть сообщение
Какова тут роль volatile ?
C
const /* volatile */ int *port;
 
int func (void)
{
  int a, b;
 
  a = *port;
  b = *port;
 
  return a * b;
}
Без volatile компилятор соптимизировал два обращения в один и тот же участок памяти и заменил их на одно обращение. Т.е. вместо "b = *port" по сути дела построил код "b = a":

Bash
$ gcc t.c -O2 -S
$ cat t.s
...
        movl    port, %eax
        pushl   %ebp
        movl    %esp, %ebp
        popl    %ebp
        movl    (%eax), %eax  <--- прочитали *port
        imull   %eax, %eax    <--- перемножили два одинаковых значения (соптимизировали)
...
теперь раскомментируем volatile и увидим, что больше эти два обращения в один и тот же участок памяти не оптимизируются:

Bash
$ gcc t.c -O2 -S
$ cat t.s
...
        movl    port, %edx
        pushl   %ebp
        movl    %esp, %ebp
        popl    %ebp
        movl    (%edx), %eax  <--- первый раз прочитали *port
        movl    (%edx), %edx  <--- второй раз прочитали *port
        imull   %edx, %eax
...
В данном тесте модификатор const вообще никакой роли не играет. Он влияет только на то, что без const'а компилятор разрешит операцию "*port = 0", а с const'ом - нет

Добавлено через 6 минут
В общем старый мусор из этого поста грохнул и нормальный тест нарисовал

Добавлено через 6 минут
Ну и ещё две ссылки до кучи:
Инициализация статического массива
Пример использования спецификатора volatile
 
Текущее время: 17:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru