gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:24:27 27 4
gpt4 key购买 nike

我是 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com