gpt4 book ai didi

C : integer variables randomly change values

转载 作者:行者123 更新时间:2023-11-30 20:23:24 25 4
gpt4 key购买 nike

我刚刚开始学习C语言。不过,我在 C# 和 Java 方面有着丰富的经验。

#include <stdio.h>     
#include <stdlib.h>
#include "info.h"
int main()
{
int day = 24, month = 3, year = 2016;

char name[] = "Ahmad\0";
strcpy(name, "Ahmad(strcpy-ed string)\0"); // <-- LINE 8

printf("%s made this program on %d-%d-%d\n", name, day, month, year);

return 0;
}

如您所见,这些值已分配给日、月和年。但问题是输出具有完全不同的值。输出是这样的

Ahmad(strcpy-ed string) made this program on 1920234272-1684352377-1885565556

更有趣的是,如果我删除第 8 行,它就能正常工作。为什么会发生这种情况?

最佳答案

您正在将比分配给它的字节更多的字节复制到 name[] 中 - C 不会阻止您这样做。额外的字节会覆盖其他内容,在本例中是您的其他变量。您正在创建未定义的行为,这在 C 程序中是一件非常糟糕的事情。

关于C : integer variables randomly change values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36207127/

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