2017-02-17 4 views
-2

У меня только что начался прыжок в C, и я пишу небольшие примеры программ. Рассмотрим следующий пример умножения двух целых чисел:Умножение чисел в C дает странный вывод

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int a; 
    int b; 

    printf("Enter first number"); 
    scanf("%d", &a); 

    printf("Enter second number"); 
    scanf("%d", &b); 

    int result = mult(a, b); 

    printf("Result %d", &result); 

    getchar(); 
    return 0; 
} 

int mult(int x, int y) { 
    return x * y; 
} 

Независимо насчитывающей вхожу всегда возвращает 6422308.

Что я с видом?

+9

'printf (« Результат% d »и результат);' -> 'printf (« Результат% d », результат);' Примечание no & –

+2

вы упускаете из виду документацию для 'printf'as. Не просто стреляйте слепо по тому, что, по вашему мнению, может быть правдой ... –

+0

Бог знает, почему это было закрыто как вне темы. Это прямой вопрос об ошибке со всем соответствующим кодом и ожидаемым поведением. Вопрос не в теме, потому что легко ответить. – JeremyP

ответ

4

В инструкции printf вы печатаете адрес переменной результата, а не ее содержимое. Просто удалите & и вы установите.

+3

Почему это было ниспровергнуто, это правильно? –

+0

@Colin__s Да, это так! – rootkea

3

&result дает вам адрес памяти переменной. Измените его на result, и он напечатает его правильно.

+0

Да, и это было рассмотрено в комментарии уже. –

+1

Ошибка была указана, но без объяснений. Может быть полезно для новичков. – JPaulez

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