2016-08-25 2 views
-3

Я новичок в C. Мне нужна помощь в этом, пожалуйста. На основе простого числа и целочисленного целочисленного алгоритма наряду с некоторыми знаниями о циклах и других материалах я привел следующий код для GOLDBACH CONJECTURE.Почему этот код не подходит для вывода типа гипотезы Гольдбаха?

Компилятор говорит:

warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ 


{ 
    printf("\t%d\t%d",&t1,&t2); 
} 
+0

Вы не разместили свой код. Нам нужно это увидеть, чтобы помочь вам. – jwodder

+0

Пожалуйста, напишите [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve), который показывает, что вы пробовали. –

+0

m пытается получить правильный отступ для моего кода, но не в состоянии это сделать! :(почему не смог опубликовать код –

ответ

1

warning: format ‘%d’ expects argument of type ‘int’ , but argument 2 has type ‘int *’

Вы отправляете аргументы неправильного типа данных в printf().

printf("\t%d\t%d",&t1,&t2) 

Здесь вы отправляете &t1,&t2, которые относятся к типу int* в качестве аргументов printf() .Но, %d спецификатор формата ожидает аргумент int типа, и это причина, почему вы в конечном итоге с выше предупреждения.

В качестве аргументов вы должны отправить t1,t2, которые относятся к типу int.

printf("\t%d\t%d",t1,t2) 
0

Предполагая, что вы целочисленную переменную, например,

int x; 

затем

&x 

возвращает адрес х в памяти.

Амперсанд (&) является оператором «адрес-из». Он возвращается, когда вещи живут в памяти.

Я просто предполагаю, что вы, вероятно, использовали такой код:

scanf("%d", &x) 

для чтения значения из файла или ввода. В то время как printf использует аналогичные строки формата, аргументы передаются значением not address. Поэтому вы просто пишете:

printf("%d", x) // not printf("%d", &x); 

scanf требуется адрес переменной, переданной для обновления переменной в памяти от ввода. Другими словами, это выходной параметр, в то время как для printf он вводится.

Смежные вопросы