经常有学弟学妹问到一个max函数(从两个数中找出最大的数)的问题,现在统一作答。

我将他们的代码放出来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>

int max(int x, int y);
int main()
{
int a,b,c;
scanf("%d,%d",&a,&b);
c = max(a,b);
printf("max=%d\n",c);
return 0;
}

int max(int x, int y)
{
int z;
if (x > y) z = x;
else z = y;
return z;
}

运行后输出结果

1
2
3
4
greedyhao@greedyhao-HP-Pavilion-Notebook:~/Desktop$ gcc error.c 
greedyhao@greedyhao-HP-Pavilion-Notebook:~/Desktop$ ./a.out
1,8
max=1

这里输出结果视编译器不同而不同。

之所以出现这样的问题,是因为输入数据的时候,格式化使用的逗号是中文导致的问题,重新使用英文逗号尝试

1
2
3
greedyhao@greedyhao-HP-Pavilion-Notebook:~/Desktop$ ./a.out 
1,8
max=8

会发现程序运行正常了

在这里建议各位,在scanf格式化的时候,别使用逗号做分隔符,使用空格就可以避免类似的问题了

1
2
// scanf("%d,%d",&a,&b);
scanf("%d %d",&a,&b);

修改后的程序使用示例

1
2
3
4
greedyhao@greedyhao-HP-Pavilion-Notebook:~/Desktop$ gcc error.c 
greedyhao@greedyhao-HP-Pavilion-Notebook:~/Desktop$ ./a.out
1 8
max=8