Указатель формата int * предупреждение

Я написал простую программу C с scanf и printf, например:

    int n;
    scanf("%d", &n);
    int result = 7 - n;
    printf("%d", &result);

и получил это предупреждение:

warning: format '% d' ожидает аргумент типа 'int', но аргумент 2 имеет тип 'int *' [-Wformat =] printf ("% d", & result);

Я не понимаю, почему аргумент 2 имеет тип int * вместо int? Как я могу это решить?

0
источник поделиться
1 ответ

result - целочисленная переменная. Если вы хотите напечатать его значение, используйте спецификатор формата %d укажите аргумент только как result not &result.

это

printf("%d", &result);

заменить

printf("%d", result);

Если вы хотите напечатать адрес переменной result используйте спецификатор формата %p.

printf("%p", &result); /* printing address */

Редактировать: спецификатор формата %p нуждается в аргументе типа void*.

Таким образом, чтобы напечатать адрес result его как void*. например,

printf("%p", (void*)&result); /* explicitly type casting to void* means it works in all cases */

Спасибо @ajay за указание, что я забыл добавить этот момент.

+2
источник

Посмотрите другие вопросы по меткам или Задайте вопрос