为什么该程序无法打印所需的输出?

Mayur Kharche

我只是从此链接了解%i格式说明符

printf中格式说明符%i和%d之间的差异

我试图用这个程序来实现它。

#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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章