#include <stdio.h>
#define dprintf(expr) printf(#expr "=%d\n",expr)
int main()
{
int x=7;
int y=3;
dprintf(x/y);
return 0;
}
x/y=2 として出力されます 「x/y」がどのように出力されるのか混乱しています
#include <stdio.h>
#define dprintf(expr) printf(#expr "=%d\n",expr)
int main()
{
int x=7;
int y=3;
dprintf(x/y);
return 0;
}
x/y=2 として出力されます 「x/y」がどのように出力されるのか混乱しています
dprintf(x/y);
に展開します
printf("x/y" "=%d\n", x/y);
これは次のように評価されます。
printf("x/y" "=%d\n", 7 / 3);
x と y は整数であるため、x/y の結果は 2 (整数) になります。
したがって、出力はx/y=2
C プリプロセッサの # ディレクティブが #expr を "expr" に置き換えることに注意してください。
また、C コンパイラは隣接する文字列リテラルを 1 つの文字列に単純に連結することに注意してくださいprintf("Hello " "World\n");
。printf("Hello World\n");
詳細については、http: //gcc.gnu.org/onlinedocs/cpp/Stringification.html#Stringificationを参照してください。