-1
因此,這裏是我的代碼當我使用int或double時,爲什麼在c中獲得兩個不同的輸出?
double blocksize = 32;
double indexSize, tagSize, offsetSize;
int main(int argc, char** argv) {
double index;
double cachesize = 1;
offsetSize = log(blocksize)/log(2.0);
index = cachesize/blocksize * 1024;
indexSize = (log(index)/log(2.0));
tagSize = 32 - indexSize - offsetSize;
printf("Offset : %f\n", offsetSize);
printf("Index: %f\n", index);
printf("Index : %f\n", indexSize);
printf("Tag : %f\n", tagSize);
return (EXIT_SUCCESS);
}
所以問題是,當我給你的一切爲int,我得到這樣的輸出:
偏移:5
指數:0
指數:-2147483648
標籤:-2147483621
然而,當我給你的一切,雙我得到這樣的輸出:
偏移:5.000000
指數:32.000000
指數:5.000000
標籤:22.000000
爲什麼我我得到兩個不同的輸出?我認爲double和int唯一的區別是int是整數,但double不是整數。它會返回一個類似於我得到5.000000,32.0000等的輸出。那麼爲什麼我會得到兩個不同的輸出?
'一/ b'也將進行整數除法,即2/3 => 0. – Thilo
在算術運算中使用整數時,結果將在每個點處截斷爲整數。例如,「10/20 * 20」爲「0」,但「10.0/20.0 * 20.0」爲「10.0」。 –