其實是printf("等于");
創(chuàng)新互聯(lián)建站自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站制作、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元濱江做網(wǎng)站,已為上家服務(wù),為濱江各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
先執(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);
}
}
主調(diào)函數(shù)調(diào)用的時候,主調(diào)函數(shù)掛起(暫停),開始執(zhí)行被調(diào)函數(shù)。被調(diào)函數(shù)執(zhí)行完畢,回到主調(diào)函數(shù)繼續(xù)執(zhí)行
第一條語句在不同的編譯器下可能會有不同的結(jié)果的,因為這里存在一個順序點的問題.
即:
在執(zhí)行順序中某些指定的點叫做順序點。這個點上,之前所有的賦值所產(chǎn)生的副作用都已發(fā)生完成,并且在其后的賦值不能在該點產(chǎn)生任何副作用。
說白了就是:
最好不要試圖在一行語句里多次改變一個變量的值,否則編譯器可以隨便定義改變的時機和次序
參考鏈接:
請注意其中順序點的定義和介紹,和你的問題相關(guān)的描述應(yīng)該是"在函數(shù)所有參數(shù)賦值之后但在函數(shù)第一條語句執(zhí)行之前"這句話