在C中从数组中添加大整数将导致没有输出

在C中从数组中添加大整数将导致没有输出,c,arrays,C,Arrays,一般来说,我对C语言和编程还不熟悉,只花了几周时间就学会了Python。我对学习如何在机器级别处理信息很感兴趣,因此我转到了C。目前,我正在处理一些简单的编码挑战,并且很难找到解决当前问题的信息 挑战是从输入中将N个大整数放入一个数组,并打印数字的总和。由于Python代码的简化性质,从Python到C的转换实际上比我预期的要困难 下面代码的输入示例: 5 1000000001 1000000002 1000000003 1000000004 1000000005 预期产出: 50000000

一般来说,我对C语言和编程还不熟悉,只花了几周时间就学会了Python。我对学习如何在机器级别处理信息很感兴趣,因此我转到了C。目前,我正在处理一些简单的编码挑战,并且很难找到解决当前问题的信息

挑战是从输入中将N个大整数放入一个数组,并打印数字的总和。由于Python代码的简化性质,从Python到C的转换实际上比我预期的要困难

下面代码的输入示例:

5
1000000001 1000000002 1000000003 1000000004 1000000005
预期产出:

5000000015
代码:

程序似乎接受N的输入,但它停止在那里


最后一个问题,简单来说,有符号变量和无符号变量之间有什么区别?

像这样更改for循环

for (i = 0; i != n; i++) {
    scanf("%i", &nums[i]);
    sum = sum + nums[i];
}
如果你说我=!这和我一样!N这样做的目的是将n的负值赋给i。因为你给了n一个非零值,结果是零,循环终止

欢迎来到C

关于签名与未签名的问题。有符号类型可以有负值,无符号类型不能有负值。但它们在内存中占用相同的空间位数。例如,假设两个补码表示和一个32位整数,值的范围是

singed   : -2^31 to 2^31 - 1  or  –2147483648 to 2147483647
unsigned :     0 to 2^32 - 1  or            0 to 4294967295

像这样更改for循环

for (i = 0; i != n; i++) {
    scanf("%i", &nums[i]);
    sum = sum + nums[i];
}
如果你说我=!这和我一样!N这样做的目的是将n的负值赋给i。因为你给了n一个非零值,结果是零,循环终止

欢迎来到C

关于签名与未签名的问题。有符号类型可以有负值,无符号类型不能有负值。但它们在内存中占用相同的空间位数。例如,假设两个补码表示和一个32位整数,值的范围是

singed   : -2^31 to 2^31 - 1  or  –2147483648 to 2147483647
unsigned :     0 to 2^32 - 1  or            0 to 4294967295

=! 可能不是您想要的,您可以使用它将一个值的NOT分配给另一个变量。如果您正在查找not==则使用!==!for循环中的值不正确。i