2013-11-11 7 views
0

После выполнения, результат был очень странным:Странный результат при попытке печати

#include <stdio.h> 
int main(){ 
    int a,b; 
    printf("enter two numbers :"); 
    scanf("%d%d",&a,&b); 
    if(a>b){ 
    printf("maximum number is %d",&a); 
    } 
    else{ 
    printf("maximum number is %d",&b); 
    } 
    return 0; 
} 

После ввода двух чисел в результате консоли был:

maximum number is 2686696 

2686696 очень странно для меня, если я вхожу два числа, такие как 5, 3, должны показать мне 5, но показывает 2686696 !!!

Может ли кто-нибудь вести меня?

ответ

0

Удалить & от printf, чтобы распечатать значение, теперь вы печатаете адрес. Должно быть:

printf("maximum number is %d",a); 
5

Вы пытаетесь напечатать адрес int не его значение. Сделайте это:

if(a>b){ 
    printf("maximum number is %d",a); 
} 
else{ 
    printf("maximum number is %d",b); 
} 

& оператор возвращает адрес a или b.

+0

@ShafikYaghmour - Спасибо, отредактирован. – Sadique

+1

Отлично, просто увидел, что +1 –

0

& в printf печатает адрес переменных вместо значения.

Для печати использовать значение:

if(a>b){ 
    printf("maximum number is %d",a); 
} 
else{ 
    printf("maximum number is %d",b); 
} 
0

Удалить & оператора от аргумента printf, если вы заинтересованы в печати номера a и b еще изменить спецификатор формата %d в %p, если вы пытаетесь напечатать адрес a и b.

printf("maximum number is %p", (void *)&a); 
Смежные вопросы