我尝试通过#define定义大量数字,但这没有用。
int main()
{
long *N;
N = (long *)malloc(10^10 * sizeof(int));
int n = 0, sum = 0;
scanf("%d", &n);
//long N = 10 ^ 10;
//int size[N];
for (int i = 0; i < n; i++) {
scanf("%lu",(N + i));
sum = sum + *(N+i);
}
printf("%d", sum);
free(N);
return (0);
}
答案 0 :(得分:2)
^
是按位XOR运算符。 operator^
的结果是操作数的按位XOR值。
10^10 * sizeof(int)
为10^ (10*4)
,因为存在优先级规则,将导致分配34个字节。
如果n
的值大于8,您将在以下语句中最终访问超出程序范围的内存。
scanf("%lu",(N + i));
为避免这种情况,您可以先读入n
,然后像这样使用malloc
:
malloc(n * sizeof(int))
答案 1 :(得分:0)
N =(long *)malloc(1000 * sizeof(long));
这可能有效:)