2017-01-30 2 views
3

Определив это:Переменный характер внутри постоянной

int var1 = 1; 
int var2 = 2; 
int var3 = 3; 

Я хочу сделать это:

int result = varc * 70; // Where c is a previously defined int that can take 1,2 or 3 value. 

Solutions? Спасибо.

+0

** _ ранее определенный _ **: что это значит? Переменная, которая может изменить время выполнения или определена во время компиляции? – LPs

+0

Переменная, которая может изменить время выполнения. – user6626956

+0

Ну, так ответ @Bathsheba - это то, что вам нужно. – LPs

ответ

6

В C вам не повезло, так как это не отражающий язык. То есть вы не можете получить значение переменной, каким-то образом «строя» имя, которое вы дали ему в исходном коде.

Но то, что вы могли бы сделать, это использовать массив:

int vars[] = {1, 2, 3}; 

int result = vars[i] * 70; 

где i является 0, 1 или 2.

+0

Принимая значение 'vars [i]' кажется run-time, где инициализация - это время компиляции. Любое объяснение, почему это действительно? –

+0

Замечание: 'int result = vars [i] * 70;' может быть только в функции (т. Е. 'Result' является автоматической переменной), поскольку вычисление инициализатора выполняется во время выполнения, а не компиляция, время (не постоянное выражение). Я чувствую, что решение Батшевы сбивает с толку без этого замечания. –

2

Вы пишете:

int result = varc * 70; 

Это то, что вы хотите сделать невозможно на языке c.

Примечание: Varc является идентификатором

Запомнить IDENTIFIER в C: Идентификаторы названия организаций в программе C, таких как переменные, массивы, функции структур, объединений.

Оно должно быть уникальным для всех объектов, а также идентификатор представляет собой строку алфавитно-цифровых символов

Хорошо, что вы вспомнили. :)

Итак, вы никогда не использовали «c», присутствующий в «varc» для обработки (ссылки) на другие переменные/идентификаторы/сущности.

Надеюсь, что я могу решить ваши сомнения самым простым способом. Спасибо! :)