【发布时间】:2013-11-09 11:44:42
【问题描述】:
我有以下结构:
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 (我在给出输入时确保它)...我似乎有重叠?请帮忙。
【问题讨论】:
-
final是unsigned并且您在printf中使用%d用于签名ints。 -
粘贴的代码副本与输出无关,请粘贴您的真实代码。
-
如果我可以使用打印屏幕,我会拥有,但我不能,因为网站不允许我这样做。
-
复制/粘贴您的真实代码,上面的内容不一致(例如 printf 行混合了值和指针)。确保将编译器的警告打开到最高级别。
标签: c