C語言問題這個誤差是怎麼產生的,C 語言問題 這個誤差是怎麼產生的?

時間 2022-08-12 22:25:03

1樓:匿名使用者

這個程式不是產生誤差,也與多執行緒無關,本來就只有一個執行緒的函式,而是演算法有錯誤的,當碰到數字尾部有零就會出錯

比如num=50,執行第一次迴圈時,num=50 num2=5 i=1

那麼當執行num=num-num2*(int)pow(10,i)時,num=num-50=0

所以最後一個零不會顯示在字串裡面

同樣道理,如果是22000,只會顯示22

如果是11111,可以正常顯示

幫你做了一下修改如下:

char *fun(char *str,int num)

*str++=num2+48;

num=num-num2*(int)pow(10,i);

} while (i>0) //針對後面多於一個零結尾的數字的處理

*str++=0;

return null; //函式要有返回值,隨便返回個null吧,結果是在str處,其實這裡函式直接void就ok了}

2樓:fm收音機臺

int是32位的,當num比較大時會產生誤差,你用long long試試.

3樓:

樓主知道什麼叫多執行緒麼?

c語言 這個到底是神馬問題,C語言問題?

本身沒問題 我用你的 在c free 成功編譯並執行,你找找別的原因吧。要改成。int main 這樣就行了。c語言問題?答案是,因為,p 先執行 p,就是取出a 0 的值而已,就是10,沒有實際用。可以寫成p 2,再執行p 這是p指向a 1 的地址。3,p 1,就是指a 1 的值加1,即11 1 ...

c語言for這個語句怎麼理解,C語言for 這個語句怎麼理解?

風千觴 for語句的一般形式為 for 表示式1 表示式2 表示式3 語句3個表示式的主要作用是 表示式1 設定初始條件,只執行一次。可以為零個 一個或多個變數設定初值。表示式2 是迴圈條件表示式,用來判斷是否繼續迴圈。在每次執行迴圈體前先執行此表示式,決定是否繼續執行迴圈。表示式3 作為迴圈的調整...

C語言問題,C語言報錯的問題?

一季忘川 printstar 返回值為void a是int變數,不能這樣賦值 這樣就好了 void printstar main 給你個呼叫函式賦值的例子int add int a,int b int main 若影蝸牛 printstar 函式,返回值為void,不能賦值給int型的a 在prin...