你是问编译为什么不报错吗
因为编译器只管类型正确就行了,它不管数据正确不正确,也管不了
i是个int,&i是i的地址,也是个int,类型一致,符合函数定义
因为scanf()
原型声明是
int scanf( const char *format, ...);
...
表明它可以接受任意数目参数,而编译器无法对除第一个参数之外的所有参数进行类型检查。这就需要程序员在写程序时确保format中的格式要求和传入参数的类型匹配
@GX 是对的。
int i;
double m;
scanf("%d", i);
scanf("%d", "haha");
scanf("%d", m);
编译都不会报错
然而,用最新编译器会报错的。