在C語言中為什麼多加了一對括號,運算結果就會變的不一樣

2021-04-21 21:34:25 字數 1429 閱讀 1165

1樓:匿名使用者

n m k都是整型。

所以 加了括號後,先計算

(n-m+k)/k是按照整型計算的。

不會保留小數部分 於是導致結果出錯。

而不加括號 ,先乘p,p是double,結果為double,保證了正確性。

c語言程式加了小括號,為什麼結果是沒有優先執行優先順序最高的()中的運算?

2樓:軒落_翼

邏輯運算子相當於是把幾個運算式隔離了,()的最高優先順序是指在同一運算式下進行運算的時候的最高優先

||運算是從左邊開始的,依次進行判斷,如果是1,就結束判斷

3樓:匿名使用者

小括號的優先來級是最高的沒有錯源,但是只是在他所在的表示式中優先順序最高。

小括號也有作用於的觀點,如果在一個表示式中的小括號,確實是優先的,但你這裡是相當於把一個賦值表示式放在小括號中,小括號的作用相當於是將後面作為一個整體的作用域符來使用了。

你所給的是一個或運算的表示式,小括號中是一個賦值表示式。按照或表示式的執行順序,從左往右執行,所以執行到b--時已經滿足條件而退出了。

也不知道你能不能理解。。。總的來說是:你的小括號不能在這樣的邏輯運算中保持優先順序,但是在算術運算中可以。在與運算中,也可以。

c語言問題,求解為什麼for後面有無花括號,導致結果不一樣呢,不是說for後面可以加花括號也可以不加花括號

4樓:匿名使用者

你理解錯了。。。不加括號是在for的執行語句只有一句是才可以。你的執行語句有兩句,所以你不加括號的話,它就預設為一句了。。

也就是說如果不加括號for語句就只有 p = p*i;在迴圈了。。。

5樓:匿名使用者

請問是誰跟你

復說的for後面可以加制花括號也可bai以不加?這個是錯誤的,花括號du是將多條語句合zhi併成一條語dao句,而for只執行後面一條語句,如果要使for後面執行多條語句就要用花括號講這幾條語句括起來,希望可以幫到樓主

6樓:匿名使用者

什麼時候加抄什麼時候不加,,

襲,,你自己

bai寫一下親身感受一下就曉得了。

du。在一個迴圈zhi體或判斷裡面,超過一個dao語句就必須加{}。。。如for(i=0;i<2;i++)和for(i=0;i<2;i++)printf("%d ",i);printf("%d\n",i+1);執行出來的結果是不一樣的,,加了{}表明{}裡面的內容屬於當前迴圈體,不加的話就不是。。。

例子中第一for執行的結果就是0 1 換行1 2換行、、、、而第二個就只是0 1 3換行

希望你能理解,,,記得采納

7樓:匿名使用者

嗯 ,當for後只有一條語句時是一樣的。當有兩條以上時,他只執行第一條。

在c語言中為什麼要減少遞迴呼叫

因為遞迴呼叫效率低,耗資源,每一次遞迴,都得將當前的函式壓入棧中,然後再調一個新的函式,遞迴次數越多,耗的資源也就越多。第一 程式看起來不直觀,打亂了程式的順序執行第二 使人不能很直觀的明白程式的意思 第三 最重要的一個原因。遞迴呼叫會佔用cpu資源,當一個遞迴呼叫足夠大的時候會讓cpu不能執行其他...

在C語言中,為什麼定義變數的時候總是初始化為0呢?該怎麼理解

因為變數是可以變動的,定義一個變數不初始化時,變數會是一個隨機數,進行計算了的時候,就會引用那個隨機數進行計算,會有誤差。如果全域性變數在定義時不初始化則初始值是0,如果區域性變數在定義時不初始化則初始值是不確定的。誰說總是初始化0的,全域性變數和靜態變數會,區域性變數不一定,可恨的不同的編譯所採用...

在c語言中,共用體一般有什麼作用

共用體一般指聯合體,作用如下 1 節省記憶體 有兩個很長的資料結構,不會同時使用,用結構體的話,只佔用最長的那個資料結構所佔用的空間,就足夠了。2 做某些轉換用 union x 20.8 1 節省記憶體,有兩個很長的資料結構,不會同時使用,比如一個表示老師,一個表示學生,如果要統計教師和學生的情況用...