Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
#1

Как обычную переменную на время сделать константой? - C++

14.07.2013, 10:32. Просмотров 3148. Ответов 66
Метки нет (Все метки)

Как обычную переменную на время сделать константой?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2013, 10:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как обычную переменную на время сделать константой? (C++):

Как обычную переменную сделать константой - C++
Как можно константой сделать обычную переменную, а то хочу создать матрицу nxn а мне VS требует что бы n1 и n2 были константами, или как...

Как сделать, чтобы "*" принимали как обычную переменную? - C++
как сделать чтобы * принимали как обычную переменную??

из массива в обычную переменную - C++
есть char'овский массив такого содержания "100" как перенести этот массив в обычную переменную типа int?

Консольное приложение.Описать как структуру переменную время - C++
Описать как структуру переменную время (с полями часы, минуты, секунды). Составить и протестировать функцию СЕКУНД(t, t1, d), которая...

Описать как структуру переменную время (с полями часы, минуты, секунды) - C++
Прошу вашей помощи Описать как структуру переменную время (с полями часы, минуты, секунды). Составить и протестировать функцию: ...

подскажите, как можно сохранить переменную, вводимую во время работы программы после ее закрытия - C++
допустим есть переменная a ... int a; cin>>a; ... при повторном открытии программы переменная нигде не сохранится. как ее...

66
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,357
Записей в блоге: 2
Завершенные тесты: 1
14.07.2013, 10:40 #2
C++
1
2
3
4
5
6
7
    int n = 5;
 
    {
        // в этом блоке n будет константа
        const int n = n;
        // some code
    }
только зачем это может понадобиться?
0
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
14.07.2013, 10:40 #3
можно передать её в функцию по константной ссылке.
На время выполнения этой функции она будет константой.
1
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
14.07.2013, 10:45 #4
Цитата Сообщение от Kastaneda Посмотреть сообщение
C++
1
2
3
4
5
6
7
    int n = 5;
 
    {
        // в этом блоке n будет константа
        const int n = n;
        // some code
    }
только зачем это может понадобиться?
или даже
C++
1
2
3
4
int main () {
  int a = 20;
  const int& _a = a;
}
1
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
14.07.2013, 10:45 #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
C++
1
2
3
4
5
6
7
    int n = 5;
 
    {
        // в этом блоке n будет константа
        const int n = n;
        // some code
    }
только зачем это может понадобиться?
Код упал на VS 2010
The variable 'n' is being used without being initialized
0
Schizorb
510 / 462 / 16
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
14.07.2013, 10:47 #6
Цитата Сообщение от Kastaneda Посмотреть сообщение
const int n = n;
На gcc мусором инициализировалось.
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.07.2013, 10:50 #7
C++
1
2
3
4
int n = 5;
{
    const int n = ::n;
}
1
Schizorb
510 / 462 / 16
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
14.07.2013, 10:51 #8
Jupiter, но это только, если n - глобальная.
1
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,357
Записей в блоге: 2
Завершенные тесты: 1
14.07.2013, 10:51 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от SummerRain Посмотреть сообщение
Код упал на VS 2010
Цитата Сообщение от Schizorb Посмотреть сообщение
На gcc мусором инициализировалось.
Ну да, перекрытие имен. Вот так надо
C++
1
2
3
4
5
6
7
8
    int n = 5;
 
    {
        // в этом блоке n будет константа
        int tmp = n;
        const int n = tmp;
        // some code
    }
3
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
14.07.2013, 10:54 #10
а покажите в каком виде хотите этим попользоваться. может придумаем более изящное решение.
0
0x10
14.07.2013, 10:54
  #11

Не по теме:

Один я не понимаю какую проблему пытается решить автор?

4
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
14.07.2013, 10:57 #12
Цитата Сообщение от 0x10 Посмотреть сообщение

Не по теме:

Один я не понимаю какую проблему пытается решить автор?

Не по теме:

Нет не один, но нам интересен процесс

0
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
14.07.2013, 10:58  [ТС] #13
Цитата Сообщение от Kukurudza Посмотреть сообщение
а покажите в каком виде хотите этим попользоваться. может придумаем более изящное решение.
воспользуюсь советом SummerRain, буду по константной ссылке передавать эту переменную в функцию
0
kotgav
2 / 2 / 0
Регистрация: 13.07.2013
Сообщений: 62
14.07.2013, 11:38 #14
Спасибо за тему, как раз и моя проблема (я начинающий, пока не знаю, как коды вставлять в сообщение, поэтому помещаю в тексте).
Есть некая функция обратного вызова FLOAT64 FSAPI GTX328_Zastavka_icon_cb(PELEMENT_ICON pelement)
C++
1
2
3
4
5
6
7
8
9
{
......
       FLOAT64  time_var = pelement->source_var.var_value.n;          // получаем текущее значение секунд от 0 до 59 с частотой 1 Гц
       FLOAT64  time_double = modf(time_var/10, &time_int)*10;        // получаем единицы и десятки секунд
 
       time_int_begin = time_int;           // замораживаем десятки секунд
       time_double_secondomer = time_double-time_double_begin;    // текущее время секундомера, единицы секунд
.......
}
При первом вызове функции я получаю текущее значение переменной time_var типа FLOAT64 (это аналог float) в секундах (от 0 до 59) и выделяю из него единицы и десятки секунд. И на первом же вызове мне надо запомнить полученное значение единиц секунд time_double_begin и сделать его константой на все последующие вызовы на все время работы программы. Далее я из текущего значения времени вычитаю эту временную константу и получаю относительное время секундомера.
Способ получения time_var единственный, это объясняется спецификой программы. Значение времени в секундах генерируется другой программой, изменить или в мешаться в этот процесс нельзя.
Пробовал использовать объявление static FLOAT64 time_double_begin и с инициализацией, и без него. Переменная не "замораживается", а изменяет свое значение при каждом новом вызове функции (что в общем то понятно, т.к. в книжках написано, что она сохраняет значение только между вызовами).
Подскажите, пожалуйста, как можно превратить переменную time_double_begin во временную константу в моем конкретном случае?
0
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
14.07.2013, 12:03  [ТС] #15
Цитата Сообщение от kotgav Посмотреть сообщение
пока не знаю, как коды вставлять в сообщение,
внизу есть кнопка "C++". сначала нужно выделить сам код и нажать ее
1
Миниатюры
Как обычную переменную на время сделать константой?  
14.07.2013, 12:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2013, 12:03
Привет! Вот еще темы с ответами:

Как сделать переменную строковой C++ - C++
#include <iostream> #include <cstdlib>// Выделенме памяти, контроль выполнения программы. очистка экрана. using namespace std; ...

Как лучше сделать глобальную переменную? - C++
Интернет совсем пустой в плане глобальных переменных на с++ Задача следующая: 1. Нужно создать много глобальных переменных будет...

Как сделать одну глобальную переменную - C++
Есть многофайловый проект. К примеру 5 файлов(5 "H" файлов+для них 5 "срр" файлов, пускай в каждом файле будет лежать класс) и есть...

Как сделать переменную пустой (обнулить)? - C++
Пишу простейшего миллионера, вариантом ответа на вопросы которого является переменная типа Int. Проблема в том, что отвечая на один...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru