[英]Division of a long long C type
我需要使用“ long long” c類型將數據存儲在非常大的數組中。 由於我的代碼很大,因此我組成了這個相當簡單的代碼,它也存在相同的問題。 因此,在循環中迭代222次,並在循環達到50%(在數組中存儲值)和100%(完成時)時打印出來。
但是它總是給我帶來錯誤,例如,在這種情況下,數組的50%應該打印索引222/2 = 111,而100%應該打印出索引222。但是,它總是打印100和200。
這是我正在使用的簡單代碼,以下是結果。
#include<stdio.h>
#define S 222
int main(void){
char *text = calloc(S, sizeof(char));
unsigned long long i;
for(i=0; i<=S; i++){
text[i] = 'a';
if(i == (S/100)*50)) {printf("50percent\t and index : %llud index should be 111" ,i );}
if(i == ((S/100)*100)){printf("100percent\t and index : %llud index should be 222", i);}
}
return 0;
}
所以我想知道我是在做錯什么,還是對該問題有邏輯上的解釋。
謝謝。
用整數算術,222/100 == 2。
您可以將比較重做為:
if (i == S/2) /* 50% */
if (i == S-1) /* 100% */
代替。
那是因為您首先要進行除法。 如果將222除以100,則會得到2.22,該整數將被截斷為2
SIZEG/100
將被格式化為一個整數,其值為2,所以您的代碼將在索引== 100和索引== 200始終打印
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.