(所有都被声明为int,没有事先被初始化为任何东西.我已经包含math.h并且正在使用-lm进行编译)
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);
Run Code Online (Sandbox Code Playgroud)
当cachesize为1024并且blockize为16时,输出如下:
setnumber: 64
sbits: 5
Run Code Online (Sandbox Code Playgroud)
但是log(64)/ log(2)= 6!
当给出cachesize 512并阻塞32时,它可以正常工作.我似乎无法获胜.
我真的希望这对我来说是一个愚蠢的错误,如果有人能指出它是什么,我将不胜感激!谢谢!
PS:我先在Yahoo Answers上发布了这个,但那可能很傻.不会再这样做了.