printf从右向左计算,从左向右打印
1、第一个例子
#include <stdio.h>
int main() {
int x = 0;
printf("%d,%d\n", x, x++);
printf("%d",x);
return 0;
}
printf(“%d,%d\n”, x, x++)函数,从右向左计算,然后从左向右输出。
首先计算x++,取出x的值,此时x等于0,这个0留给printf语句输出之用。然后执行x = x + 1; 这时x 等于1;
输出时,从左向右输出,先输出1,再输出0。
最后x的值为1。
2、第二个例子
#include <iostream>
using namespace std;
int main() {
int arr[] = {6,7,8,9,10};
int *ptr = arr; // ptr指向第一个元素6
ptr++; // ptr指向下一个元素7
printf("%d, %d\n", *ptr, *(++ptr)); // 8 8
return 0;
}
在执行 printf(“%d, %d\n”, ptr, (++ptr));时,从右向左计算,首先计算ptr = ptr+1,此时ptr指向的元素8。输出时,从左向右输出,所以是8 8。