c - % 运算后奇怪的负数

标签 c

所以我有类似下面的东西,

int main()
{
    int a[10];
    int i=0;
    int n=10000000000;
    while (n!=0)
    {
        a[i++]=n%10;
        printf("we have n  is %d\n", n);
        printf("we have n mod 10 is %d\n", n%10);
        n/=10;
        printf("we have%d\n", a[i]);
    }

当 n mod 10 为 '0' 时,我总是得到一个负数,有人能告诉我为什么吗?

最佳答案

int 太小,无法容纳该数字。您得到一个溢出,导致 n 实际上是一个负数,因此您得到一个负值的模运算。

关于c - % 运算后奇怪的负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22014003/

相关文章:

c - 我想在c中实现单独的链接哈希。但 createhashtable 函数中的代码内存不足

c - 如果某些限制指针指向同一个对象,为什么编译器不生成警告或错误?

c - 除非我暂停程序,否则程序不会结束

c++ - C 中的 undefined reference 错误

c - 二进制数 : strange differences between + and |

我们可以在没有动态内存分配的情况下在 C 中使用双向链表吗?

C:检查Chrome中的页面是否已完全加载

c - 函数 lu 分解上的 malloc 数组

c - 函数atoi返回错误的数字

c - free() 给我一个错误,无效对话从聊天到无效