gpt4 book ai didi

c - 在 C 中为两个(一维)数组赋值

转载 作者:行者123 更新时间:2023-11-30 19:57:56 27 4
gpt4 key购买 nike

我正在尝试为两个数组 Pages 和 Price 赋值。

#include<stdio.h>
int main()
{
static int pages[3];
static int price[3];
int i;
printf("\nEnter the no. of pages and price of the book:\n");
for (i=0; i<=3; i++)
{
printf("provide input:");
scanf(" %d %d", &pages[i], &price[i]);
}
for (i=0; i<=3; i++)
{
printf(" %d %d", pages[i], price[i]);
}
getch();
return 0;
}

输出如下:

Enter the no. of pages and price of the book:
Provide Input:98
12
Provide Input:87
54
Provide Input:99
34
Provide Input:89
45

45 12 87 54 99 34 89 45

这里,输入的最后一个元素的值,即 (price[3]=89) 被分配给数组 Pages (pages[0]) 的第一个元素。为什么会出现这种情况?

据我了解,建议使用struct来存储相关数据。但是,为什么会有这种奇怪的行为呢?

最佳答案

您的条件是i <= 33也满足了这一点。因此,pages[3]pages[3]将被访问,这在两种情况下都是未定义的行为。索引从 0 开始在 C 中,所以数组为 x元素在 [0; x - 1] 中具有明确定义的索引.

将条件更改为i < 3解决问题并使您的程序定义良好。

关于c - 在 C 中为两个(一维)数组赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35013018/

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