我是 C 编程的新手,正在尝试了解数据类型。
我指定了以下变量:
int nsamples = 10000000;
int n = 32;
int m = 64;
int nrpoinnts = n*m*nsamples+99;
printf("Nr points %d\n",nrpoinnts);
由于某种原因,打印出来的数字是负数。为什么会这样?我认为超出了 nrpoints 的值范围,所以我检查了两次。最后的结果是我也得到了负值。
最佳答案
您正在使用的带符号 int
或只是 int
的限制/范围,即使在具有 4 的 64 位机器上 字节整数是 2,147,483,647(作为其最大值)和 −2,147,483,648(作为其最小值)- 您尝试生成/打印的值是 20480000000 大于限制/范围 - 因此它正在包装并产生 -ve 结果。
例子:
#include<stdio.h>
int main()
{
printf("%d\n",2147483647+1);
return 0;
}
输出: −2147483648
使用 long unsigned 而不是 int
来包含结果。
关于c - 打印负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52732398/