#include <stdio.h> int main() { int i; char buf[1024]; for (i = 0; i < 1024; i++) buf[i] = i%256; for (i=0; i<1024; i++) { printf("%d ",buf[i]); if (i%32==31) printf("\n"); } }解决方法 我们来看看这行代码:
buf[i] = i%256;
这里,i%256被计算为int类型的值.但是,buf是一个字符数组,所以当将值赋给数组时,它会被截断为char.如果模数的结果在可以存储在char中的正值范围之外,则它可能最终缠绕并且作为负数存储.
换句话说,并不是模数产生的负值与将结果存储在无法保持的类型中一样多.尝试将数组更改为int数组或unsigned char数组,看看是否修复了这些问题.
希望这可以帮助!
总结以上是内存溢出为你收集整理的c – 模运算的结果是否定的全部内容,希望文章能够帮你解决c – 模运算的结果是否定的所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)