我只是从此链接了解%i格式说明符
我试图用这个程序来实现它。
#include <stdio.h>
int main(){
long long a,b;
printf("Input: ");
scanf("%i %lld",&b,&a);
printf("Output: %i %lld",b,a);
}
%i正常工作,但%lld将垃圾值存储在变量a中。
这是该程序的输出。
输入:033033
输出:27 141733920846
进程返回0(0x0)执行时间:4.443 s按任意键继续。
谁能解释,为什么我要在变量a中获得垃圾值?
scanf
%i
需要一个int *
,但您正在通过&b
,这是一个long long int *
。这具有未定义的行为。
您应该使用%lli
。
在printf
以下情况中会出现相同的问题:%lli
用于打印b
,而不用于%i
。
您还应该检查scanf
的返回值,以确保成功读取了两个值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句