printf函数的计算顺序:先从右到左压栈,然后从左到右出栈。
例程:
#include"stdio.h" int main() { int arr[] = { 1, 2, 3, 4, 5 }; int *ptr = arr; printf("%d %d\n", *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\n", *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; }
输出:
时间: 2024-12-18 17:17:03