簡體   English   中英

長C長型的划分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM