这是一个上海贝尔实验室的笔试问题,如下:
#include<stdio.h>
#include<string.h>
int minux(int a, int b)
{
return a-b;
}
int main(int argc, char *argv[])
{
int c=4;
printf("the number : %d\n", minux(++c, ++c);
return 0;
}
问,这个程序运行的结果是多少?
想了下,应该输出的是-1
不对,在程序里跑了一次,居然执行的结果是1,这有点意思
查看相关的资料,原来这跟编译器有关,因为有的编译器的函数是从右往左入栈的,所以这样解释起来就明白了,先b++,然后
a++,结果就如上面所给的输出是一样的了