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 !

谁能指导我?

4

4 回答 4

5

您正在尝试打印int不是其值的地址。做这个:

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

&运算符返回aor的地址b

于 2013-11-11T15:18:35.183 回答
0

删除&fromprintf以打印值,现在您正在打印地址。应该:

printf("maximum number is %d",a);
于 2013-11-11T15:18:30.697 回答
0

printf 中的 & 打印变量的地址而不是值。

要打印一个值,请使用:

if(a>b){
   printf("maximum number is %d",a);
}
else{
    printf("maximum number is %d",b);  
}
于 2013-11-11T15:20:28.627 回答
0

如果您对打印数字感兴趣,请&从参数中删除运算符,如果您尝试打印 and 的地址,请将格式说明符更改为。 printfab%d%pab

printf("maximum number is %p", (void *)&a);
于 2013-11-11T15:20:42.983 回答