C/C++知识要点4——printf函数以及cout的计算顺序


printf函数的计算顺序:先从右到左压栈,然后从左到右出栈


例程:

#include"stdio.h"

int main()
{
	int arr[] = { 1, 2, 3, 4, 5 };
	int *ptr = arr;
	printf("%d %d
", *ptr, *(++ptr));

	return 0;
}

输出:2 ,2



计算顺序:先计算*(++ptr)。进行压栈,然后计算*(ptr)。再压栈。


注意:++ptr 和 ptr++ 的计算顺序。会导致不同结果。


#include"stdio.h"

int main()
{
	int arr[] = { 1, 2, 3, 4, 5 };
	int *ptr = arr;
	printf("%d %d
", *ptr, *(ptr++));

	return 0;
}

输出:2, 1



计算顺序:先压栈*(ptr)。然后运行++操作,之后。压栈*(ptr)。输出的时候。从左到右依次出栈,所以结果为2,1


cout 计算顺序也一样。


见例程:

#include"iostream"
using namespace std;
int main()
{
	int arr[] = { 1, 2, 3, 4, 5 };
	int *ptr = arr;
	cout << *(ptr) << " " << *(ptr++) << " "<<*(ptr++)<<endl;
	return 0;
}


输出:



原文地址:https://www.cnblogs.com/wzjhoutai/p/6770598.html