求c达人帮助!!!

来源:百度知道 编辑:UC知道 时间:2024/09/13 03:27:23
#include<stdio.h>
#define FUFGE(K) K+3.14159266
#define PR(a) printf("a=%d\t",(int)(a))
#define PRINT(a) PR(a);putchar('\n')
#defien PRINT2(a,b) PR(a);PRINT(b)
#define PRINT3(a,b,c) PR(a);PRINT2(b,c)
#define MAX(a,b) (a<b?b:a)
void main()
{
{
int x=2;PRINT(x*FUDGE(2));
}
{
int cel;
for(cel=0;cel<100;cel+=50)
PRINT2(cel,9.15*cel+32);
}
{
int x=1,y=2;
PRINT3(MAX(x++,y),x,y);
PRINT3(MAX(x++,y),x,y);
}
}

不要最终结果,我要的是详解的过程!!!

其实都是宏定义惹的祸;
a=7好理解因为你打出的是2*2+3.14159266而不是2*(2+3.14159266);

对与下面这个for()语句;你的循环体只是输出cel两次,即50,100就跳出了。然后输出cel*9.15+32,即100*9.15+32是947;

最后这个嘛。第一次max(x++,y)是y,它等于2,但x变成了2(有x++),所以是2 2 2。第二次有点麻烦,首先是x++(2)不小于(2)应 该取后一项(x++),它是3,因为自加一次,但这个3被用后又自加一次,变成了4,所以结果是3 4 2;我也许说的乱,语文不好啊!不懂的再问我,呵呵o(∩_∩)o...

是很奇怪,我做了一下,认为答案是:
a=10
a=0 a=32
a=50 a=489
a=2 a=1 a=2
a=2 a=2 a=2
可是上机运行发现,无论是VC6还是TC2。0都给出一致的莫名其妙的答案:
a=7
a=0 a=50 a=947
a=2 a=2 a=2
a=3 a=4 a=2
我也不懂……呵呵。那位高手来指教一下啊!