關於c語言的自增自減的單輸出和多輸出的區別
阿新 • • 發佈:2018-12-04
先寫一個單輸出的樣式,分析他們的輸出方式和順序。
#include<stdio.h> #include<stdlib.h> void main() { int a=8; printf ("%d\t",++a); printf ("%d\t",--a); printf ("%d\t",a++); printf ("%d\t",a--); printf ("%d\t",-a++); printf ("%d\t",-a--); system("pause"); }
這是一個最簡單的c語言的自增和自減的單輸出的程式碼!可以看出單輸出是重上往下的順序,
而且與賦值語句的順序順序和方法是一至的。
那讓我們看看多輸出語句的C語言的自增自減是否也是一樣呢。
void main ()
{
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
system("pause");
}
這是一個多輸出的語句,我們先想想他的結果是什麼。
是不是感覺和自己的想象多少有一些出入?
我們先來看看第一個數按照往常的思維是不是第一個數就錯了,
那我們換個角度想一想。是不是多輸出是從右往左的呢?
思考一下發現從右往左是對的,但是倒數第2個數卻怎麼也想不出是為什麼對吧。
那我們就來分析一下,
首先從右往左按照C語言的自增自減賦值和運算的規律都沒有錯直到左數第2個數,為什麼不是7呢?那我就來說明一下,
當自加自減後,得到了一個與定義的變數加減1的數,我們把這個數放在一個暫時的儲存單位,而定義的那個變數的值所站的位置的值是不變的,那就是說明這個變數有兩個值,一個是加減完了的暫定的值,還有一個是初始是值。
我們清楚這個道理後就可以開始理解了,當自加自減在右邊時(右識別符號),我們取暫定的值賦給輸出量。而當自加自減在左邊時(左識別符號),我們拿最開始定義的那個值給輸出量,而且不用在進行運算。
想一下,是不是結果就出來了呢?
注意識別符號的位置。還有一點大家在想的時候非常容易出錯,就是千萬不要把數值的“正負符號”帶給那個變數。