gpt4 book ai didi

c - 使用简单的数学运算得出奇怪的结果

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

我有以下结构:

typedef struct number
{
int x;
int y;
int z;
unsigned long int final;
}number;

我的代码如下:

number* numbers;
numbers= (number*)malloc(sizeof(number));
scanf("%d %d %d", &numbers->x, &numbers->y, &numbers->z);
printf("input: %d,%d,%d\n",numbers->x, &numbers->y, &numbers->z);
numbers->final=(numbers->x)*4000 + (numbers->y)*50 + (numbers->z);
printf("final: %d",numbers->final);

但是输出是错误的。例如,这是一次运行:

12 12 12
input: 12,12,12
final: -28640

我无法找出问题所在。 number->final 可以获得的最高数字是 90,000 (我在给出输入时确保它)...我似乎有重叠?请帮忙。

最佳答案

你的问题是指针。我假设您按如下方式初始化该结构。

numbers *numbers;

但是,如果您在声明它的主函数中使用它,则不要使用指针。 printf 调用中也存在一些错误,您正在打印 y 和 z 的内存地址,而不是像 x 值那样打印值。

使用类似的东西。

#include <stdio.h>

typedef struct number
{
int x;
int y;
int z;
unsigned int final;
} number;

int main()
{
number numbers;

scanf("%d %d %d", &numbers.x, &numbers.y, &numbers.z);
printf("input: %d,%d,%d\n",numbers.x, numbers.y, numbers.z);
numbers.final=(numbers.x)*4000 + (numbers.y)*50 + (numbers.z);
printf("final: %d\n",numbers.final);

return 0;
}

对,如果你使用了 malloc,它看起来像这样。

#include <stdio.h>
#include <stdlib.h>

typedef struct number
{
int x;
int y;
int z;
unsigned int final;
} number;

int main()
{
number *numbers = malloc(1 * sizeof(number));

scanf("%d %d %d", &numbers->x, &numbers->y, &numbers->z);
printf("input: %d,%d,%d\n",numbers->x, numbers->y, numbers->z);
numbers->final=(numbers->x)*4000 + (numbers->y)*50 + (numbers->z);
printf("final: %d\n",numbers->final);

free(numbers);

return 0;
}

运行示例here

关于c - 使用简单的数学运算得出奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19875531/

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