【发布时间】:2019-10-30 21:46:05
【问题描述】:
先生/女士,
我不知道我做错了什么。从逻辑上讲,一切对我来说都是正确的。牙套似乎也放置在正确的位置。那为什么我会收到以下错误消息?
32 8 [错误] '(' 标记之前的预期构造函数、析构函数或类型转换
33 2 [错误] 'return' 之前的预期不合格 ID
34 1 [错误] '}' 标记之前的预期声明
我对这个特定程序做错了什么?而且,我希望使用相同的语句进行更正,而不是任何其他语句。
请帮忙!
程序:
#include <stdio.h>
main()
{
int a, b, c, d, big;
printf("\n Enter value to a, b, c, d: ");
scanf("%d %d %d %d", &a, &b, &c, &d);
if (a >b)
{
if(a>c)
{
if(a>d)
big = a;
else
big=d;
}
else
{
if(c>d)
big = c;
else
big = d;
}
else
if(b>c)
{
if(b>d)
big = b;
else
big = d;
}
}
printf("\n The biggest number is %d", big);
return 0;
}
【问题讨论】:
-
构造函数和析构函数不是 C 语言的一部分。
-
你不能在另一个 else 语句之后有第二个 else 语句。在第 23 行附近,您需要一个 else if 语句。
-
您正在使用 C++ 编译器。因此,您必须使用符合 ISO 标准的
main定义:int main()。除了else问题(这只是一个错位的},如果您正确缩进代码可以避免),您还缺少一些逻辑。请注意“固定”程序编译但不起作用:godbolt.org/z/RoWlRj -
当然,因为这是C++,你可以使用
int big = std::max(std::max(a, b), std::max(c, d)) -
这是 C,不是 C++。但是,是的,编译器同时兼容 C 和 C++。 @paddy