初學C語言,幫我看看這個輸出結果為什麼是0?

2023-06-07 20:30:09 字數 1267 閱讀 7100

1樓:嘿小盒子

1、因為你剛開始定義a,b是int型別的,整形的。

2、所以在a進行計算的時候會將12+這個算式(a=12+計算成24,計算機自動將a語句的結構儲存成整數型。

3、在你將b的值賦值為浮點型的a(b=(float)a;)時,結果其實應該是。

4、但是由於你並未給b改變型別,所以他還是一個整形,在你結尾時引用lf浮點型的輸出方式進行輸出時,計算機識別不出來,所以結果為零。

2樓:鎮遠山神侍

你好。這個是跟計算機體系結構有關的:

c語言中,printf函式不會進行任何型別轉換,只是按照你給的格式從記憶體讀取值。

在計算機中,printf函式去訪問讀取記憶體資料時,訪問讀取浮點數和訪問讀取整數的暫存器是不一樣的。

你給的格式是去訪問讀取浮點數進行列印,卻給了整形變數,所以無法訪問讀取到變數的值。

如果你將變數b強制轉換為浮點型變數,輸出是會沒問題的。

這是我之前聽大神說的,具體的細節我也不清楚,給你作個參考。

上應該有很多這個資料,你可以查證一下。

3樓:網友

沒有報錯嗎?這是顯式轉換和隱式轉換和問題,不知道你強制轉換能不能轉換成功,一般寫**的時候都不用強制轉換,容易出問題。

4樓:網友

到a的時候就轉為整型了,直接轉為148然後轉型為float是最後結果可能就是這個。

5樓:杯具——悲劇

因為int型別的a 不能等於。

剛學c,求解釋。輸出結果為什麼是0?謝啦!

6樓:█╬卍

看這個圖,不知道你能不能看懂。

myun是一個聯合體結構,對於聯合體的記憶體分佈,這裡一兩句話說不清楚,一下就是上圖示意的這個,其中k和u是重疊的,如果要問為什麼u和k重疊,好吧,去看聯合體的記憶體分配方式。

弄清楚這個問題之後就好辦了,可以很明顯地發現和指向的是同一個int型記憶體區,也就是說它們的值不管何時都是完全一樣的。

所以改變,會受到影響,反正亦然!

因為執行了;這一句,所以也就變成了0,所以輸出的是0.

看看這個c語言程式為什麼結果是

if 後沒有用 只對後面第一個分號前的語句起作用也就是b a這個語句 因為a然後執行a c 則a 3,接著執行c b,則c 2現在是a 3,b 2,c 2 所以輸出3,2,2 if後只執行一條語句 a c 假 b a 不執行但 a c c b 執行 a就變成了3 c也變成了2 就是 3 2 2 了 ...

哪位大神幫我看看這個c語言程式錯在哪

首先是首行的stdio.h書寫錯誤,其次是switch 後面不加分號。其它錯誤我還沒發現 第一,標頭檔案 第二,switch 後面的分號去掉。switch n 5 括號裡面不能有運算表示式 大神幫我看看這個c語言程式不知道 錯了 就不能複製 出來?只會照 我換了10個顯示器,30個鍵盤,20個滑鼠也...

麻煩大佬幫我看看這個求水仙花數的C語言程式哪錯了

這變數定義的也太多了吧。還有 整形資料不要隨便用除法 容易出錯。c語言中?和 是什麼意思,怎麼運用在程式設計中 是條件運算子,使用的格式如下 條件 a b 如果條件成立,表示式的值就是a,否則是b 是用來取非運算的,true的結果就是 false false 的結果是 true 寫程式中,用的比較少...