第一條語句在不同的編譯器下可能會有不同的結果的,因為這里存在一個順序點的問題.

創(chuàng)新互聯服務項目包括玉樹網站建設、玉樹網站制作、玉樹網頁制作以及玉樹網絡營銷策劃等。多年來,我們專注于互聯網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯網行業(yè)的解決方案,玉樹網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到玉樹省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
即:
在執(zhí)行順序中某些指定的點叫做順序點。這個點上,之前所有的賦值所產生的副作用都已發(fā)生完成,并且在其后的賦值不能在該點產生任何副作用。
說白了就是:
最好不要試圖在一行語句里多次改變一個變量的值,否則編譯器可以隨便定義改變的時機和次序
參考鏈接:
請注意其中順序點的定義和介紹,和你的問題相關的描述應該是"在函數所有參數賦值之后但在函數第一條語句執(zhí)行之前"這句話
其實是printf("等于");
先執(zhí)行的,然后再執(zhí)行的scanf("%d",?c);
只不過scanf的時候并不是從屏幕上scanf的,而是從緩沖區(qū)scanf的
你的5其實在printf之前先進入了緩沖區(qū),然后再printf等于,然后再從緩沖區(qū)scanf那個5
如果要想得到你那個效果的輸入輸出,可以試試下面的代碼
#include?stdio.h
void?main()
{
int?b,?c,?f;
char?a;
scanf("%d?%c",?b,?a);
printf("%d%c",?b,?a);
if?(a?==?'-')
{
printf("等于");
scanf("%d",?c);
f?=?b?-?c;
printf("%d?%d",?c,?f);
}
}
先回答下第一個問題,子函數的實現方法可以放在使用它的主函數或者其它子函數后面,但是你的定義一定要在使用它之前;不然編譯器怎么知道你用的函數square是什么,這就是我們經常包含頭文件的一個目的,頭文件是一些函數定義或者預編譯命令。
修改是在#includestdio.h后面加
int square(int num);
第二個問題:num是在main定義是可以在main作用域內直接使用,或者當做參數傳遞給子函數,你的問題num為什么可以在子函數中用,首先你子函數的num并非main里的num只是你把他們名字寫成一樣了;main里num是通過值傳遞給子函數的num,實際他們兩個num的內存地址是不一樣的,你子函數換個名字去理解一下。
網頁標題:c語言函數順序 c語言順序表
文章來源:http://www.yijiale78.com/article48/hhcpep.html
成都網站建設公司_創(chuàng)新互聯,為您提供云服務器、移動網站建設、營銷型網站建設、網站導航、企業(yè)網站制作、網站維護
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯