2
#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」がどのように出力されるのか混乱しています

4

2 に答える 2

1
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を参照してください。

于 2013-09-19T16:14:12.353 に答える