Поскольку dDim
оценивается до выполнения main
. В начале - до того main
функция вызывается, DIM
128. dDim = 2 * DIM
, что означает dDim
256.
Тогда main()
функция вызывается, DIM
устанавливается в 256. Но все это не имеет никакого влияния на dDim
.
Как я могу закодировать его, чтобы он менялся динамически?
Вы можете использовать метод, упомянутый Caleb ниже, или вы можете использовать макросы препроцессора.
int DIM = 128;
#define hDIM ((DIM)/2)
#define dDIM ((DIM) * 2)
int main() {
DIM *= 2;
printf("%d", dDIM); /*prints 512 :-)*/
return 0;
}
Я, однако, не рекомендую вышеуказанный метод. Это отвратительно и сложно отлаживать. Например, он не этот тест:
assert_equal_float(2.5f, hDIM);/*when DIM is 5*/
меняющегося 'DIM' не будет автоматически менять' dDIM', 'dDIM' имеет то же значение, вы инициализируетесь его, если не изменить его непосредственно (или через указатель или ссылка, но ни одна из них не применяется здесь) –
Как я могу закодировать ее так, чтобы она динамически менялась? – Zizo47
нет понятия в C++ переменных, автоматически обновляющихся на основе значений друг друга - по крайней мере, не встроенных в язык. если вы хотите обновить обе переменные, вам нужно обновить обе переменные самостоятельно. –