读书人

小程序求教解决办法

发布时间: 2012-02-25 10:01:48 作者: rapoo

小程序求教
#include <stdio.h>
int main(void)
{
int a=21,b=11;
printf( "%d\n ",--a+b,--b+a);
a=21;b=11;
printf( "%d\n ",--a+b);
printf( "%d\n ",--b+a);
a=21;b=11;
printf( "%d%d\n ",--a+b,--b+a);

return 0;
}
我认为的答案是:
30
31
30
3130
而程序运行的答案是:
30
31
30
3031
请高手指教!!!


[解决办法]
其实我也想知道答案为什么不是我们想要的,楼上的都告诉原因了。
我做了个小实验,让我明白了为什么结果是这样。但是我也要强调一下,这个编译器有关,不同的编译器会得到不同的结果。如果以后谁要是再问你这中问题,你就反问他,“为什么你要这么写程序,为什么你要写一个移植性差,而且有副作用的程序”

请看我的实验,我在输出语句中跟踪了a 和 b
#include <stdio.h>
int main(void)
{
int a=21,b=11;
printf( "%d\n ",--a+b,--b+a);
a=21;b=11;
printf( "%d\n ",--a+b);
printf( "%d\n ",--b+a);
a=21;b=11;
printf( " <a=%d b=%d> %d <a=%d b=%d> %d <a=%d b=%d> \n ",a,b, --a+b, a,b, --b+a, a,b);

return 0;
}

读书人网 >C语言

热点推荐