c - 在 C 中从数组中添加大整数导致无输出

标签 c arrays

我是 C 语言的新手(以及一般的编程,减去 Python 的几周时间)。我有兴趣了解如何在机器级别处理信息,因此我转向了 C。目前,我正在应对一些简单的编码挑战,并且无法找到信息来解决我当前的问题。

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

以下代码的示例输入:

5
1000000001 1000000002 1000000003 1000000004 1000000005

预期输出:

5000000015

代码:

int main() {
    long long unsigned int sum = 0;
    int nums[200], n, i;
    scanf("%i", &n);
    for (i = 0; i =! n; i++) {
        scanf("%i", &nums[i]);
        sum = sum + nums[i];
    }
    printf("%llu", sum);
    return 0;
}

程序似乎接受了 N 的输入,但它到此为止。

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

最佳答案

像这样改变你的for循环

for (i = 0; i != n; i++) {
    scanf("%i", &nums[i]);
    sum = sum + nums[i];
}

如果你说 i =! ni = !n 相同。这样做的目的是将 n 的取反值赋给 i。由于您为 n 提供了非零值,因此结果为零并且循环终止。

欢迎来到 C!

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

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

关于c - 在 C 中从数组中添加大整数导致无输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33807014/

相关文章:

python - cython:使用 numpy.ctypeslib.ndpointer 将 float 组转换为 python 数组

python - 使用 numpy.linalg.norm() 函数查找数组的最近点

arrays - 当我将 numpy 数组作为输入传递给 keras 层时,它具有不同的形状

C 从文本文件创建数组

c - 为什么我不能将类似对象的宏粘贴到函数中?

c - 有没有办法在行为不当的指定初始化器时得到警告?

Javascript OOP 和数组

python - 如何通过 pySerial 从 Python 发送 int 或 string 并在 C 中转为 int 或 String

python - 为什么这种 PyArray_SimpleNewFromData 段错误的简单用法?

arrays - 使用数组中的一个索引