2012-05-04 14 views
0

是否有可能在C中定義一個const值:是否可以定義const值並且要求用戶輸入它?

#define N; 

,比從用戶問使用scanf函數進入()?

如果是這樣,怎麼辦?

+0

「const value」是什麼意思?你真的只是在你的例子中定義了一個'#define'常量嗎?你的意思是任何編譯時常量?或者'const'值(即一個用'const'關鍵字限定的變量)會做什麼?如果是這樣,那麼:'const int N = get_user_input();'。 (但是,請注意,在C中,const限定的變量不是編譯時常量)。 – jamesdlin

回答

0

不,因爲#define s在編譯時使用preprocessor插入代碼中。它們不能在運行時更改。您定義使用define

1

事情都是由預處理器以文字代替實際的編譯器甚至看到源代碼之前。

此外,常量不應該改變,這應該是相當明顯的關於你的想法的紅旗。

3

#define ed值不是正常的const。它們由預處理器計算/轉換,所以在編譯時會丟失它們,並且在運行時肯定無法更改它們。

。注意,句法這種#define#define N 5而非#define N;

2

預處理宏定義的擴展被設定時預處理階段運行,這是即使是散裝彙編之前。

因此,例如,如果你做#define N 5,那麼N將永遠是5,從來沒有別的。

如果你做#define N my_global_integer,那麼N將永遠是my_global_integer,從來沒有別的。

所以我想你可以這樣做:

#include <stdio.h> 

#define N my_global_integer 
int my_global_integer; 

int main() { 
    scanf("%d", &N); 
    printf("%d\n", N); 
} 

的預處理宏N是恆定的,但它最終擴展到變量不是。我通常不會建議,但如果這個問題是一個謎題,那麼這可能是答案。

相關問題