1. 程式人生 > >printf ,scanf 的應用和區別

printf ,scanf 的應用和區別

函式printf從左往右讀取,然後將先讀取放到棧底,最後讀取的放在棧頂,處理時候是從棧頂開始的,所有我們看見的結果是,從右邊開始處理的。

(PS:這段話有書上不贊同,但一般可以這麼用著)

例:

vc

1.

#include<stdio.h>
#include "stdafx.h“

void main()
{
int a=3;
printf("%d,%d/n",a,(a-=a*a));
}

2.


#include<stdio.h>
#include "stdafx.h“

void main()
{
int a=3;
printf("%d,%d/n",(a-=a*a),a);
}

1的輸出-6,-6

2的輸出3,-6

--------------------------------------------------------------------------------------------------------------

再舉個例子:

main(){

int i=8;

printf("%d %d %d %d %d %d ",++i,--i,i++,i--,-i++,-i--);

}
執行結果
8
7
7
8
-7
-8

例2

main(){

int i=8;

printf("%d ",++i);

printf("%d ",--i);

printf("%d ",i++);

printf("%d ",i--);

printf("%d ",-i++);

printf("%d ",-i--);

}
執行結果:
9
8
8
9
-8
-9

這兩個程式的區別是用一個printf語句和多個printf 語句輸出。但從結果可以看出是不同的。為什麼結果會不同呢?就是因為printf函式對輸出表中各量求值的順序是自右至左進行的。在第一例中,先對最後一項“-i--”求值,結果為-8,然後i自減1後為7。 再對“-i++”項求值得-7,然後i自增1後為8。再對“i--”項求值得8,然後i再自減1後為7。再求“i++”項得7,然後i再自增1後為8。 再求“--i”項,i先自減1後輸出,輸出值為7。 最後才求輸出表列中的第一項“++i”,此時i自增1後輸出8。

但是必須注意,求值順序雖是自右至左,但是輸出順序還是從左至右,因此得到的結果是上述輸出結果。