gpt4 book ai didi

c - 我在 C 语言的签名数中遗漏了什么吗?

转载 作者:太空宇宙 更新时间:2023-11-04 05:55:47 24 4
gpt4 key购买 nike

这是我的基本 C 测试程序。在我构建它之后,我只是在控制台中输入负数,如 -1-2 等。但结果是“哦”,而不是“另一个数字”。我不知道为什么会这样,因为负数应该使“if”语句为真。

int main(int argc, char* argv[]){
long int num;

scanf("%d", &num);

if(num ==1 || num < 0){
printf("another number\n");
}else{
printf("oh\n");
}
}

最佳答案

当您将%d 格式字符串与scanf 一起使用时,相应的参数将被视为int*。但是你传递了一个long int*scanf 存储的值将与您的 if 语句读取的大小不同。

正式地,您会得到未定义的行为。实际上,在大多数平台上,scanf 将只写入变量的一部分,其余部分将保留任意值,这通常会对以后的使用造成不良影响。

关于c - 我在 C 语言的签名数中遗漏了什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27772462/

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