請問乙個c語言的問題?

時間 2021-06-06 15:43:24

1樓:土地測量員

反對那些說看IEEE 754浮點數標準的(暫且不談c標準裡浮點數表示方法是implementation-defined)。即使你知道了IEEE754浮點標準,也不能解釋輸出的結果。因為用%d輸出浮點數是未定義行為。

同理,也反對樓上通過看彙編解釋輸出結果的方法,因為這解釋只在特定實現下有效。

別想著解釋未定義行為。用不同的硬體,不用的作業系統,不同的編譯器(甚至不同的版本,不同的編譯選項)等…都可能會帶來不同的結果。

2樓:君莫笑hhhhhhhhh

100.8這個常量是放在記憶體中乙個位址,按照浮點數的格式進行儲存的。i是乙個int變數,位於另乙個位址。

100.8賦值給int型變數i時進行了隱式型別轉換,i中按照十六進製制格式存的只是100這個數。用printf %d輸出時,只是把對應位址中的資料按照十進位制格式輸出。

i那個位址就是放的100,100.8那個位址是按浮點數格式存放的100.8,輸出出來就看起來異常了。

具體怎麼回事你搜一下浮點數格式就懂了

3樓:會魔法的貓

並不是辣雞值啦

首先為什麼會是 858993459呢, 首先這個值是因為被截斷了, int的size和double的size不一致

doublei=

100.8

;intj=

*(int*)(&

i);//858993459

long

longk=

*(long

long*)(

&i);// 4636793586349978419doublel=

*(double*)(

&k);// 100.8

printf

("%f\n"

,4636793586349978419L);//

100.8

c語言的乙個疑問?

最佳答案就在C語言的標準裡,C99標準裡定義了6種statement 語句 for語句屬於 iteration statementif語句屬於 selection statement所謂花括號 屬於compound statement而帶分號 的語句屬於expression statement這裡需...

程式設計小白乙個,請問如何系統的學習程式設計,c語言和Python哪個更好

Leon 建議先學習c語言 因為很多語言都是從c語言吸取開發的,可以毫不誇張的說,學好c語言學習其他語言會輕鬆很多,python的語言基礎比起c簡化很多,但是基本想通。都說c語言是開啟程式設計世界的大門 學習族 推薦Python,首先你可以不用在一開始就被各種資料型別和奇葩的報錯困擾,甚至乙個標準讀...

乙個C語言問題,迴圈之後引數值為什麼發生變化了?

李展發 藏雲 讓老夫試試終結這個問題吧。首先你要了解對於函式內宣告的變數 非靜態變數 它是儲存在棧中的。進入函式後首先壓入棧的變數就是你的引數。也就是N。然後再壓入你宣告的第乙個變數,也即是陣列bucketArray.關鍵就在這裡,N跟BUCKETARRAY這兩個變數是放在一起的。而你在FOR迴圈中...