printf輸出順序問題與i++、++i

printf輸出順序問題與i++、++i

printf()

今天遇到類似這樣一道編程題:

#include<stdio.h>

int main()
{
	int i = 0;
	printf("++i,++i,++i,++i,++i,++i  =  ");
	printf("%d %d %d %d %d %d\n",++i,++i,++i,++i,++i,++i);
	i=0;
	printf("i++,i++,i++,i++,i++,i++  =  ");
	printf("%d %d %d %d %d %d\n",i++,i++,i++,i++,i++,i++);
	
	i=0;
	printf("i++,i++,i++,++i,++i,++i  =  ");
	printf("%d %d %d %d %d %d \n",i++,i++,i++,++i,++i,++i);
	
	i=0;
	printf("++i,++i,++i,i++,i++,i++  =  ");
	printf("%d %d %d %d %d %d\n",++i,++i,++i,i++,i++,i++);

	i=0;
	printf("++i,++i,i,i,i++,i++  =  ");
	printf("%d %d %d %d %d %d\n",++i,++i,i,i,i++,i++);
}

輸出結果:
在這裏插入圖片描述

編程環境是:VS2010、win10
在這裏插入圖片描述
總結一下:
printf()從右往左輸出;
如果輸出爲 i++,則輸出當前 i 後立馬賦值 i = i + 1;否則輸出位置爲 ++i 或者 i 時,先進行完所有運算再輸出 i 的最終值。

" = "與i++、++i

#include<stdio.h>

int main()
{
	int i;
	int num;
	
	i=0;
	num=(i++)+(i++)+(i++)+(i++)+(i++);
	printf("num = (i++)+(i++)+(i++)+(i++)+(i++) = %d\n",num);//0+0+0+0

	i=0;
	num = (++i)+(++i)+(++i)+(++i)+(++i);
	printf("num = (++i)+(++i)+(++i)+(++i)+(++i) = %d\n",num); //5+5+5+5+5

	i=0;
	num = (++i)+(++i)+(i++)+(i++)+(i++);
	printf("num = (++i)+(++i)+(i++)+(i++)+(i++) = %d\n",num); // 5+5+0+0+0

	i=0;
	num = (++i)+(++i)+(++i)+(i)+(i++);
	printf("num = (++i)+(++i)+(++i)+(i)+(i++) = %d\n",num); //5+5+5+0+0

}

在這裏插入圖片描述
對於等式來說,是先對 i 和 i++ 中的 i 賦值,再最後對 ++i 中的 i 賦值,然後運算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章