C語言基本問題糾錯

時間 2022-06-29 10:00:06

1樓:張新香

樓主你好,你的問題主要出在:a=(int)a和printf("%d\n",a)這兩句。因為在前面你已經宣告a為float型別了,雖然進行a=(int)a強制型別轉換之後得到了一個整數,但這並沒有改變a的資料型別,所以不能使用%d輸出,建議宣告一個int變數,將(int)a賦值給它。

2樓:匿名使用者

a=(int)a; //下面是對這句**的解釋:

(int)a 部分的解釋

a的型別在上面就指定為float了 這裡(int)a其實是建立一個臨時的int型別的變數,把a對應的記憶體資料直接copy到建立的臨時int型別變數。a變數的型別並沒有被改變,而且對於編譯型語言它的型別你也改變不了啊。

a=temp 部分的解釋

執行完上一步的操作以後,緊接著會將建立的臨時int型變數temp賦值給 float型別的a變數。因為a和temp的型別不一樣,編譯器的規則是整型轉化為浮點型,所有int型的temp會變為float的型的資料。假如temp=2,那麼轉型後 temp=2.

0f。最後,a就變成了2.0f了。

3樓:

#include

int main()

4樓:匿名使用者

變數a是float型別,不能使用%d格式輸出

C語言糾錯

將樓主的 一下就知道了 第一層t min2 w 第二層t w 上面表示式的計算順序是 1 先計算w 2 再計算 w 3 w 只寫這三層吧,執行順序並不是想象的那樣。巨集不是自己加括號,需要我們自己來加。修改一下 define min2 x,y x define min4 w,x,y,z min2 m...

c語言程式糾錯

樓上兩位說的對,不過你們估計沒有具體的編譯過,其實還有兩個小問題 1.x b 2 a sqrt b b 4 a c 2 a y b 2 a sqrt b b 4 a c 2 a 這兩句用到了sqrt 函式,它的原型為double sqrt double x 即輸入輸出都是雙精度,所以x,y,a,b,...

高中哲學基本問題,高二 哲學的基本問題

1 辨證的否定是事物的自身否定,是事物發展的環節和聯絡環節,是揚棄,既克服又保留。2 社會存在決定社會意識.3 馬克思主義向來認為,歷史是人民群眾創造的。工人階級必須依靠本階級的群眾力量和全體人民的群眾力量,才能完成自己的歷史使命。因此,同資產階級的政黨相反,工人階級的政黨不是把人民群眾當作自己的工...