gpt4 book ai didi

c - 为什么 scanf 在格式不匹配时返回随机值

转载 作者:行者123 更新时间:2023-12-05 08:22:01 25 4
gpt4 key购买 nike

#include <stdio.h>

int main() {
int i,j,k;
scanf("%d %d %d",&i,&j,&k);
printf("%d %d %d", i, j, k);
return 0;
}

输入“5 .5 .5”后,返回值为“5 -6229899888 32765”。这个返回值背后的原因是什么?这里到底发生了什么? (当然,除了前 5 个,那是正常匹配的)。

最佳答案

scanf 匹配输入文本时,它根据转换规范(例如为 %d 解释十进制)进行转换,并将结果分配给所指向的对象相应的参数。

scanf 不匹配时,它不进行赋值。

那么相应对象中的值就是调用 scanf 之前的值。如果你没有给它赋值(通过初始化或赋值),它的“值”是不确定的。1 有时它看起来拥有的值是早期使用相同的内存用于不同的目的。

脚注

1 当 C 标准定义的值不确定时,编译器不需要为其值使用分配的内存。允许优化删除任何可能获取其值的内存负载,因此程序可以继续使用某个寄存器或另一个寄存器中的任何数据,并且程序代码中的位置可能有所不同。这可能会导致不确定的值在不同时间看起来不同。

关于c - 为什么 scanf 在格式不匹配时返回随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66892338/

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