gpt4 book ai didi

c - 为什么程序的输出会在计算机之间发生变化

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:35 26 4
gpt4 key购买 nike

这是作业,但我搜索了一个小时后还没有更接近答案。

考虑以下程序:

#include <stdio.h>
#include <string.h>
int main(){
char s[10], t[10];
int i, j;

strcpy(s, "frog");
for(i=0; i<strlen(s); i++)
t[i] = s[i];
j = 0;
for(i=0; i<strlen(t); i++)
j = j+(int)t[i];
printf("%d\n", j);
return 0;
}

这个程序的预期输出是 430,但它经常产生不同的结果。结果似乎会根据程序运行的时间或在哪台计算机上运行而改变。为什么?

据我了解,strcopy 将使 s = {'f','r','o','g','\0',..} strlen(s) 将始终返回 4。运行以下循环,t = {'f','r','o','g',..}。我能看到它返回 430 以外的值的唯一方法是,如果 t 在 g 之后有一个不是\0 的值,导致 strlen(t) 返回大于 4 的值。

所以,如果我认为问题出在数组的第五个位置 t 可能没有\0 是正确的,有人可以向我解释为什么吗?

最佳答案

当然,strcpy可能会插入一个空字节,但您绝对不会复制 \0穿过你的for i = 0; i < strlen(s); i++)循环……

关于c - 为什么程序的输出会在计算机之间发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20276415/

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