printf函数的参数压栈顺序有关问题
printf函数的参数压栈顺序问题
程序员面试宝典上有一道关于printf函数的参数计算顺序的问题,如下注释中的内容所示
#include <stdio.h>
int main(){
int n = 'c';
printf("%d,%d,%d\n",n,++n,n);
}
/*int main(){
int arr[]={6,7,8,9,10};
int *ptr=arr;
*ptr+++=123;
printf("%d,%d\n",*ptr,*++ptr);
return 0;
}*/
答案是8,8,即printf函数参数在计算时是从右边开始的,按照这个解释,在没有注释的地方,我加了两行,我本来想的结果是
100,99,99,但是计算的结果是100,99,100,这是为什么?
------解决思路----------------------
你被骗了
题目是错的
参数的压栈顺序是压栈顺序
和副作用没什么关系
你应该去看看本版的置顶帖
------解决思路----------------------
http://bbs.csdn.net/topics/370153775
程序员面试宝典上有一道关于printf函数的参数计算顺序的问题,如下注释中的内容所示
#include <stdio.h>
int main(){
int n = 'c';
printf("%d,%d,%d\n",n,++n,n);
}
/*int main(){
int arr[]={6,7,8,9,10};
int *ptr=arr;
*ptr+++=123;
printf("%d,%d\n",*ptr,*++ptr);
return 0;
}*/
答案是8,8,即printf函数参数在计算时是从右边开始的,按照这个解释,在没有注释的地方,我加了两行,我本来想的结果是
100,99,99,但是计算的结果是100,99,100,这是为什么?
------解决思路----------------------
你被骗了
题目是错的
参数的压栈顺序是压栈顺序
和副作用没什么关系
你应该去看看本版的置顶帖
------解决思路----------------------
http://bbs.csdn.net/topics/370153775