C語言,為什麼這個表示式出來是錯的

2021-03-07 21:50:32 字數 1280 閱讀 6908

1樓:匿名使用者

資料型別是錯誤的

printf() 要求 後面的填充 資料域 的 資料型別,必須和資料域指定的型別一致。

%f 要求 的資料型別是 float。(在微軟的編譯器上,其實是double)

而 b*c/d 計算的結果 是 int 型別b*c/d-2.1 的計算結果是 double 型別解決方法是

printf("%d\n", b*c/d);

或者printf("%f\n", (float)(b*c/d));

2樓:

printf的%f要把引數按浮點輸出,所以對應的引數必須是浮點型,

而,b*c/d中變數都是整型,所以結果也是整型,型別與%f不配就出錯。而b*c/d-2.1表示式中有個2.

1,它是預設的浮點型,按c的規則,表示式中的其他變數都要臨時提升到浮點型參與運算,結果也是浮點型,所以就對了。

3樓:匿名使用者

%f 是輸出浮點數的,而你用整數計算的結果也是整數,所以出錯,你得強制為浮點數,你加了個2.1之後,結果是浮點數,就對了,

4樓:粉絲丶

少了一個右括號。你數一下就知道了。

打字不易,如滿意,望採納。

c語言中表示式7=4+3為什麼是錯的?

5樓:

=在c語言中是賦值,你這個表示式意思就是把4+3賦值給7,但是7已經是個常量了,就會出現問題。不知道你是想實現什麼,如果是要比較,如1樓說的用雙等於。如果要賦值的話,7要用一個變數代替,如a=4+3,然後再輸出printf("%d,a"),如果只是想輸出這個表示式,就直接printf("7=4+3")

6樓:

左值不能為常量,=是賦值操作符,要想比較操作是7==4+3

7樓:星辰戀

=是賦值,賦值語句的左值應該是變數,7是常量,不能把數值賦值給常量的!

關於c語言條件表示式的問題 b選項為什麼是錯的?

8樓:

while語句 while :它用來實現bai"當型"迴圈結構。du其一般形式如下:zhi while(表示式)語

dao句 當表示式為非0值時執專行while語句中的內嵌語屬句。其特點是:先判斷表示式,後執行語句。

do...while語句: do 語句 while(表示式)第一次執行一個語句塊,然後重複迴圈的執行該語句塊, 直到條件表示式等於 false

C語言表示式105的值是C語言中表示式105的值是?

是1。根據c語言運算規則,檢查左運算元的值是否小於右運算元的值,如果是則條件為真。1 0 5是先執行1 0 false 結果為0,再執行0 5 true 因此結果為1。如下 表示式的值為1 根據運算子表,是從左往右結合的。先看1 0是假,返回0。原式就變成 0 5,是真,返回1 所以結果就是 1。擴...

C語言中表示式135值,c語言程式是求表示式的值s

有一個優先bai 級的問題 du,注意單雙目 運算子的優先順序zhi,雙目運算子dao除賦值回運算子都為自答左向右結合.運算子.與 相比 大於 與 相比 大於 運算子的運算是自左向右.1 3 5,因為 1 3為真,值為1 1 5為假,值為0 故表示式 1 3 5值為0 1 3為真,值為1 1 5為假...

c語言中while()表示式的疑問

你可以避開0啊,用其他數字代替。或者while x 0 0 100是真。非0即真。表示式為真也是真,如x 4,y 6,x y則是假。這個很簡單,例如定義一個變數int a 然後判斷當a為0時才進入迴圈如下 while a 0 這樣當a為0時就執行迴圈了,因為當a為0時,while 中表示式的邏輯運算...