我想知道可用于“a”和“b”而不会出错的数字范围。(即输出也应该给出正确的值。)
#include <stdio.h>
#include <stdlib.h>
int sum(int * , int *);
int main()
{
unsigned int a= 10;
int b = -30,c;
c=sum(&a,&b);
printf("sum of %d and %d is %d",a,b,c);
return 0;
}
int sum(int *p , int *q)
{
return *p+*q;
};
我为变量“a”提供了一个有符号数,该数字被声明为无符号整数,为变量“b”提供了“-30”。我得到了大于-2147483618(-2147483617、-2147483616等)的值的正确输出。但我得到了 a=-2147483619 以后的正值。为什么会这样呢?请帮帮我。
最佳答案
我认为标准中没有定义无符号和有符号整数的内部表示。 (特别是因为即使“int”的大小也可能有所不同。)因此您的行为将是不确定的。它在特定系统上可能是一致的,但很可能不会转移到另一个系统/编译器。
关于c - 如何测试下面的代码?如果我为声明为 'unsigned int' 的变量提供有符号整数,会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29370623/