為什麼c語言運算結果是這個printf運算順序是什麼

2021-04-13 11:10:56 字數 5898 閱讀 7684

1樓:匿名使用者

printf是從後向前運算的

不過這個順序 和你的結果沒什麼關係

**中,所有的 都是後置自加或者自減 所以 會執行printf之後才進行加減運算

從結果上來說 這個就是輸出i值和三個-i值。

下面c語言中a++*2表示的是什麼意思,以及這個程式的詳細運算步驟,o(∩_∩)o謝謝

2樓:匿名使用者

看了下下面的,看來我沒講清楚

這是優先集的問題。

++的優先集比*高。所以先做++

a++*2就是a++然後*2

因為a++的含義是先做運算,等運算完再對a加1.

所以效果是a*2後,然後加上1.

可是如果是++a*2呢???

當然也是先++,

所以就是先++a,然後*2.

這才是我想表達的優先集問題

main()

3樓:匿名使用者

不管是a++還是n--,都是先進行運算後,再遞增或者遞減例如輸入n的值為5,先判斷n是否不為零,再執行n--,總共迴圈5次同樣a++*2 是先a*2,然後再執行a++以上跟運算子的優先順序、結合性沒關係

就算加上括號也是一樣,如(a++)*2 同樣是先a*2再 a++還有如指標變數p

*(p++) 同樣是先*p 然後再p++

你如果把-- ++寫到變數前面,那就是先遞增或遞減再進行運算

4樓:匿名使用者

a++*2其實就是考你操作符的結合律,由於++得優先順序高於*(乘號),所以先計算a++。

而a++又是有「延遲」的,它在當前語句中不對a的值加1,而是當前語句執行完之後,a的值才加1. 所以如果a一開始為 0,那麼a++的值還是零。

不過printf("%d",a++*2);執行完之後,a的值為1了。

5樓:匿名使用者

首先輸入個n,然後n開始自減

,到0為止迴圈結束,迴圈體裡面就是列印一個數,這個數就是a++*2,一開始a++*2是先乘2再做++,所以是0,然後a就是1了,然後又繼續先乘2再++,所以就是2了,然後就是4了,然後就是6了,一直到n=0為止。例如輸入n=4,那麼就是0246,輸入5就是02468

6樓:

a先乘上2

然後a在自加1

c語言printf函式運算順序為什麼從右到左

7樓:

不是printf函式運算復順序為什麼從右到制左,而是類似的所bai有函式,包括算du定義函式的參zhi數計算都是從右至左。函式數有dao多個引數時計算總得有個順序吧?不是從左至右,就是從右至左,抑或從中間向兩邊;一句話選定一個順序後就「大家都這麼辦」,總不能有些函式從左至右,有些函式從右至左吧,那編譯器就太難做了。

當初選擇從右至左肯定是這樣有好多方便之處,比如printf中的參數列,由於c是基於棧操作的,棧又是後進先出的,從右至左計算壓棧,然後按彈出順序輸出到螢幕上剛好順應了大多數文字從左至右的習慣,很是方便;若從左至右計算壓棧,那也不是說不可以,但處理就沒有這麼方便了。個人管見,供參考。

8樓:翎

從彙編bai角度來看,du

函式的引數總是從高地址壓zhi到低地址,而訪dao問回引數的時候又是

答通過基址加偏移量來的,所以按照邏輯,偏移量為0對應第一個引數,第一個引數在低地址,低地址最後壓入棧,相對應的函式最右邊的引數也就最先計算,並先壓入棧。

9樓:匿名使用者

#include

using namespace std;

int main()

如上**du

輸出zhi

dao1。說明a>0先被

專計算屬

10樓:匿名使用者

因為其內部是從右往左排 的

~~~~

11樓:匿名使用者

這是因為在c語言呼叫時,引數需要用堆疊傳遞,而引數壓棧順序是從右到左的

12樓:滄海雄風

彙編角度來看,函copy數的引數總是從高地址壓到低地址,而訪問引數的時候又是通過基址加偏移量來的,所以按照邏輯,偏移量為0對應第一個引數,第一個引數在低地址,低地址最後壓入棧,相對應的函式最右邊的引數也就最先計算,並先壓入棧

誰能幫我弄下 這是c語言作業 o(∩_∩)o謝謝了

13樓:盡心就是我

3.#include

using namespace std;

void f( )

void main( )

4.#include

using namespace std;

int main()

system("pause");

return 1;

}//5、 求和 (求奇數和,偶數和)

#include

using namespace std;

int main( )

printf(" 1-100奇數的和為:sum=%d\n偶數的和為:%d\n",sum,osum);

system("pause");

return 1;

}#include

using namespace std;

//6、 求積: 求階乘函式

long fac(int n)

main( )

//7、 二維陣列求最大、最小。

main( )

,,} ;

int i , j,i0,j0,max ;

max=a[0][0] ;i0=0 ;j0=0 ;

for(i=0;i<3;i++)

for(j=0;j<4;j++)

if(a[i][j]>max)

system("pause");

}//8、 二維陣列求行和(全部和、部分項之和)

main( )

,,},b[3] ;

int i , j,s ;

for ( i=0 ;i < 3 ; i++)

system("pause");

}//9、 求素數。

#include "math.h"

int sushu(int m)

return flag ;

}main()

system("pause");

} //10、 輸入字串,將其中大寫改為小寫,小寫改為大寫,其他字元不變。

main()

system("pause");

} //輸入:zxcv123456qwerty

//結果:zxcv123456qwerty

//11、 統計字串中,字母、數字、空格和其它字元各多少?

main( )

system("pause");

}//12、 一維陣列求最大並確定位置。

main()

printf("\n\n");

max=a[0] ; i0=0 ;

for(i=1;i<10;i++)

if(a[i]>max)

system("pause");

}//13、一維陣列排序(選擇法,升序或降序)

void sort1(int x[ ] , int n)

}}for(int i=0;i

using namespace std;

//16、取出整數 a中4~7位的值。輸入的數為123456

main()

14樓:匿名使用者

是要他的最後執行結果嗎?

都是基本c語言的程式

15樓:匿名使用者

學的是c語言的c++?什麼意思?到底是學的c還是c++?

如何學習c語言?

16樓:z不可替代

學習方法是:

1、課前預習,課後複習,認真做課堂、課後的作業,理解理論知識。

2、記住語法規則。

3、加強邏輯思維。

4、多動手,通過練習上機瞭解它的執行過程。

5、實踐—>理論—>再實踐,剛開始學習c語言時,按示例練習,並推動理論的學習,然後再自己多思考,多上機實踐。

c語言是一門通用計算機程式語言,廣泛應用於底層開發。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。

17樓:雲南新華電腦學校

怎樣才能學好c語言

1、學好c語言,你可以很好地應付任何一種程式設計工具。

2、一定要多上機練習,通過程式瞭解相關知識。幾經反覆方得正果。

3、不要把學習c語言當成一種任務,更不要把它看成很難完成的任務。要充滿自信,只要是一個智力正常的人都能學好c語言。始終保持遊戲的心態,多發現其中的樂趣。

當感到程式設計趣味無窮,那你在電腦方面將前程無量。

4、如果一個程式一時無法弄清楚最後暫時放在一邊,過一段時間你可能會從其他的程式中悟出道理。

5、c語言是一個整體,各個方面是有機聯絡的,要從總體上把握它,不要把它割裂成互不關聯的部件。

6、不要完全相信教材(包括本講義),所有結論最好都上機驗證。

怎樣學好c語言

1. 工欲善其事,必先利其器

準備工作:一個開發環境,如turbo c 2.0、visual c++等開發工具;一本好教材,如譚浩強主編的《c語言程式設計》(第二版)。

我當時看的是他的第一版,就為它的簡潔、完美所吸引,簡直愛不釋手,用了兩個星期一口氣看完。

2. 祕密**

初學者學習計算機語言要會「讀程式」,要對小型的應用型、遊戲型程式感興趣,並模仿去加深對c語言程式設計的理解和操作,只有不斷地寫程式、除錯程式才能得到編寫程式的經驗和加深對程式的理解,這也是學習編寫優秀高階程式的祕密**。

3. 發揚探索精神

學習c語言程式設計有點像做數學難題,只要我們善於思考,善於探索,發揚探索精神去尋找好的設計思想和方法,才能把c語言的精髓真正地掌握。

備戰c語言考試要訣

1. 瞭解大綱,臨陣不亂

各類筆試中,大多數考題是與大綱要求的基本內容一致的,難度不高,但內容十分廣泛,應牢固掌握c語言考試大綱要求的基礎部分。只有熟悉題型,理解語法、句法,做到心中有數,才能臨陣不亂。

2. 善於歸納,強化記憶

對於需要記憶的計算機基礎知識和基本概念,如果考試時因此失分就十分可惜。如:c語言中有幾種不同的資料型別?

運算的優先順序別是怎樣的?因此我們需要善於歸納這些計算機基礎知識,並在理解的基礎上強化記憶。

3. 重視實踐,善於除錯

18樓:用士恩屈凰

程式設計只有一個捷徑:程式設計程式設計再程式設計!!至於你說的厭學情緒,你可以試試這樣,用一個星期左右的時間把書全過一遍,看不懂的地方做上標記,跳過去。。。

然後再去看第二遍,做課後習題,把第一遍不會的再看看,實在不會的,再做上標記,跳過去。。。三個星期左右的時間就差不多了,然後就開始第三遍,重點看那些不會做的題目。。。實在還是不會的,就不要浪費時間了,去網上找高手幫你看看,說下演算法,思路,學習下,想想自己為什麼做不出來。。。

其實c語言是入門語言,有它的道理的,它最重要的部分就是一個」指標「,c學好了沒,很大程度上就是看你的指標掌握的怎麼樣。。。學習要有重點,不要什麼都抓!!

c語言中34是怎麼運算的結果是多少啊

結果是1 是邏輯操作符號 與 當兩邊都為非0時,整個結果為1。邏輯與操作符 真值表 邏輯與操作符可以應用於任何型別的運算元,而不僅僅是布林值。在有一個運算元不是布林值的情況下,邏輯與操作就不一定返回布林值 此時,他遵循下列規則 1.如果第一個運算元是物件,則返回第二個運算元 2.如果第二個運算元是物...

下面程式段的輸出結果是為什麼c語言

a的資料型別是什麼?不管了,我就當是 int 型的了。a 100,a 120不成立,所以while 不執行,而while後面的內內 容是容 分號,也就是 while的內容為 空 所以結束while後執行a a 1 得a 101,列印a 101 a 100 while a 120 請注意這裡有沒有ba...

這個程式的運算結果是什麼,下面程式的運算結果是

答案 104 倒數第二次執行n是13 s是90。然後執行n n 14,s 90 14 104。另外一定要看判斷條件,是s 100而不是n 100,所以答案絕對不會比100大不了多少。該程式是統計s 1 2 3 n 100的最小的情況時,輸出n 1和s的值。執行的結果是 10515 程式把兩個數字10...