C语言纠错,在线等。

来源:百度知道 编辑:UC知道 时间:2024/05/18 02:06:39
#include <stdio.h>
#define MAX(a,b) (a > b ) ? (a) : (b)

int main ( void )
{
int a,b,c,d;
printf("输入4个数:\n");
scanf("%d%d%d%d",&a,&b,&c,&d);
printf("最大数是:%d\n",MAX( MAX(a,b),MAX(c,d)));
return 0 ;
}

scarecrow@scarecrow-desktop:~/myc$ gcc -Wall maxOf4.c -o maxOf4
scarecrow@scarecrow-desktop:~/myc$ ./maxOf4
输入4个数:
1
2
3
4
最大数是:2
scarecrow@scarecrow-desktop:~/myc$

小弟哪里出问题了???

改成如下就可以啦
#define MAX(a,b) ((a > b ) ? (a) : (b))

建议把max(a,b)改为函数形式。用define替换法,符号的优先级导致其执行顺序与字面的意思不同了。

名字重复问题?

改为#define MAX(a,b) ((a > b )?(a):(b))说的对
就是这的问题

问题就是你把宏原样展开以后,运算符的优先顺序,完全不是你想的那样.