我是 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 =! n
与 i = !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/