gpt4 book ai didi

c - Scanf_s 读取错误的输入

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:53 25 4
gpt4 key购买 nike

对于下面的代码(C 语言)

    int small_a, small_b;
printf("Please input two numbers\n");
scanf_s("%d %d", &small_a, &small_b);
printf("%d %d", &small_a, &small_b);
int test_2nd = small_a - small_b;
if (test_2nd < 0) {
printf("a is smaller %d", &small_a);
}
else {
printf("b is smaller %d", &small_b);

当我写 4 和 2 时它打印的值是一个巨大的六位数字(在本例中为 5504620 和 5504608)我不明白哪里出了问题。 stdio.h 已作为 header 包含在内。

最佳答案

这里的问题出在打印语句中。在代码中

 printf("%d %d", &small_a, &small_b);

您不需要(想要)获取(打印)地址。删除那个 &

也就是说,这实际上调用了 undefined behavior . %dprintf() 需要一个类型为 int 的参数,而您实质上是在提供一个 int *,导致 UB。

FWIW,要打印地址(指针),您需要使用 %p 格式说明符并将参数转换为 void *

关于c - Scanf_s 读取错误的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39675667/

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