gpt4 book ai didi

c - 为什么这个程序没有打印出想要的输出?

转载 作者:太空宇宙 更新时间:2023-11-04 00:46:16 33 4
gpt4 key购买 nike

我只是从这个链接知道 %i 格式说明符

Difference between format specifiers %i and %d in printf

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

#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 中存储了一个垃圾值。

这是这个程序的输出。

Input : 033 033

Output : 27 141733920846

Process returned 0 (0x0) execution time : 4.443 sPress any key to continue.

谁能解释一下,为什么我在变量 a 中得到垃圾值?

最佳答案

scanf %i 接受一个 int *,但你传递的是 &b,这是一个 长整型*。这具有未定义的行为。

你应该使用 %lli

同样的问题出现在printf中:使用%lli打印b,而不是%i

您还应该检查 scanf 的返回值以确保成功读取了两个值。

关于c - 为什么这个程序没有打印出想要的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38007591/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com