printf d輸出乙個float變數

2021-05-24 22:06:21 字數 705 閱讀 9707

下面是乙個看似很簡單的問題,但是乍問起來好像說出正確答案的人並不是很多。

int main(int argc, _tchar* argv)

1,首先對於負數求模的理解.

遵循的原則是:

兩個正數的求模運算結果是正數,

兩個負數的求模運算結果是負數.

一正一負的話取決於"分子"的符號,

有的書好象是說取決於編譯器的實現.

2,就是printf用不同於變數型別輸出時會有什麼樣的出人意料的答案.

對於int在記憶體中的儲存是占用四個位元組,相同的float也是占用四個位元組,那當然肯定列印的結果是相同的了,但是一旦你執行程式得到的結果卻是大破眼鏡。

輸出結果如下:

out by float :1.000000

out by int :0

z out by int 536870912

press any key to continue . . .

嗯??為什麼呢?對於同樣是占用四個位元組的記憶體中的資料為什麼列印出來卻是不同的呢?

事實上,雖然float是四個位元組但是他的儲存在記憶體中是以雙精度儲存的,而且%f列印的時候也是去八字節的東西,而對於%d去的則是第四位位元組的東西,從而得到了當用%f列印的時候是正確的,而對於當用%d列印的時候卻是錯誤的。

然而還有乙個問題:

為什麼當float不是整數的時候列印出來的東西卻是乙個沒有規律可循的數值呢?

輸出乙個愛心

目錄 include include int main putchar n return 0 注意 的第7行中的 color 0c 其中的0和b分別控制控制台的前景和背景顏色。0和b是控制台輸出的顏色屬性。顏色屬性由兩個十六進製制數字指定 第乙個對應於背景,第二個對應於前景。每個數字可以為以下任何值...

如何逆序輸出乙個整數

給出乙個整數,將它逆序輸出,首先求出它是乙個幾位數,利用for迴圈將數字從高位到低位分別輸出。例如1234這個數,首先通過for迴圈求出,它是乙個4位數,然後1234第一次除以1000,得到1並輸出,1234再對1000取餘,去掉1得到234,第二次234除以100,得到2並輸出,234再對100取...

c 輸出乙個陣列

關於c 輸出乙個陣列最普遍的方法就是用for 迴圈語句寫 如 int a new int 10 for int i 0 i a.length i for int j 0 j 今天我在瀏覽stackoverflow的時候發現了兩個簡便的輸出陣列的語句 鏈結如下 乙個是 foreach var item...