(所有被声明为整数,没有被初始化为任何事情事前我已经包括math.h中,并正在与-lm编译)C程序给简单的数学提供不正确的输出!
cachesize = atoi(argv[1]);
blocksize = atoi(argv[3]);
setnumber = (cachesize/blocksize);
printf("setnumber: %d\n", setnumber);
setbits = (log(setnumber))/(log(2));
printf("sbits: %d\n", setbits);
给出的cachesize时为1024块大小为16的输出如下:
setnumber: 64
sbits: 5
但是log(64)/ log(2)= 6!
它在给定cachesize 512和blocksize 32时正常工作。我似乎无法获胜。
我真的很希望这是我的一个愚蠢的错误,如果有人能指出它是什么,我将不胜感激!谢谢!
PS:我先发布了这个在雅虎答案第一,但这可能是愚蠢的。不会再这样做。
@DuffDuff - 不忘记接受最好的答案。 – 2010-05-02 23:28:57
+1发布到雅虎答案是一个愚蠢的想法:) – 2010-05-02 23:38:53