scanf()少了&会怎样

要求像下面的代码一样,输入两个整数,并输出前者是后者的百分之几。
题图

这与昨天的练习类似,只是改为实数类型而已。

我的代码如下:

#include 

int main(){
    double a;
    double b;
    
    puts("请输入两个整数。");
    printf("整数A:"); scanf("%lf",a);
    printf("整数B:"); scanf("%lf",b);
    
    printf("A是B的 %f%%。",a/b*100);
    
    return 0;
} 

如果你仔细看了,可能就会发现 scanf()的第二个实参缺少了&。
此时运行如下图


问题代码运行

当扫描第一个实数时,程序意外停止。

最初我并未发现代码的错误,可能是写得太累了。我转而考虑是否可能是兼容性问题,并尝试地更改设置。最后脑子一清醒,发现是 scanf()错了,我也是很囧。。。
缺少取值运算符&时,编译通过、程序运行,仅在扫描第一个实数时停止的现象,也算是唯一稍微让我有点兴趣的了。


照例贴上修改过的正确代码:

#include 

int main(){
    double a;
    double b;
    
    puts("请输入两个整数。");
    printf("整数A:"); scanf("%lf",&a);
    printf("整数B:"); scanf("%lf",&b);
    
    printf("A是B的 %f%%。",a/b*100);
    
    return 0;
} 

你可能感兴趣的:(scanf()少了&会怎样)