0

Cでconst値を定義することは可能ですか?

#define N;

そして、ユーザーから入力を求めるよりも、scanf()を使用していますか?

もしそうなら、どのように?

4

4 に答える 4

3

#defineed 値は通常の const ではありません。それらはプリプロセッサによって計算/変換されるため、コンパイル時に失われ、実行時に変更することはできません。

そのような a の構文#defineは、#define N 5ではなく#define N;

于 2012-05-04T11:12:45.693 に答える
2

プリプロセッサ マクロ定義の展開は、プリプロセス フェーズの実行時に設定されます。これは、コンパイルの大部分の前でもあります。

したがって、たとえば、 を実行すると、常に になり、#define N 5それ以外のことはありません。N5

あなたがそうするなら#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は定数ですが、最終的に展開される変数はそうではありません。通常はアドバイスしませんが、この質問がパズルである場合、それが答えになる可能性があります。

于 2012-05-04T11:16:51.197 に答える
1

いいえ。

を使用して定義したものdefineは、実際のコンパイラがソース コードを見る前に、プリプロセッサによってテキストで置き換えられます。

その上、定数は変更されるべきではありません。それはあなたのアイデアに関してかなり明白な危険信号であるはずです。

于 2012-05-04T11:12:37.627 に答える
0

いいえ、コンパイル時にプリプロセッサ#defineを使用して s がコードに挿入されるためです。実行時に変更することはできません。

于 2012-05-04T11:12:25.970 に答える