#include "stdio.h"
int main( )
{
int x, y;
y=x(5);
return 0;
}
MSVC 2010编译器出现以下错误:
Error 1 error C2064: term does not evaluate to a function taking 1 arguments c:\users\ae\documents\visual studio 2010\projects\text\text\text.cpp 13
2 IntelliSense: expression must have (pointer-to-) function type c:\users\ae\documents\visual studio 2010\projects\text\text\text.cpp 13
这是语义错误还是语法错误?
答案 0 :(得分:4)
语义。如果x
是一个带有1个参数的函数,那将是合法的语法 - 但它只是int
。
如果你这样做会出现语法错误:
int x, y;
y=x((5;
return 0;
答案 1 :(得分:4)
我会说这是语义错误,特别是类型错误。令牌序列y = x(5)
格式正确,x(5)
部分被解析为函数调用表达式。错误是x
不评估函数指针,而是评估int
。
答案 2 :(得分:2)
如果是语法错误,它会这么说。这是一个语义错误。这完全取决于代码中标识符的含义。
答案 3 :(得分:2)
它会清除语法分析通过,因为它只检查天气有没有语法错误。
我的意思是y=x(5);
,
它表示传入函数x的5和值返回y。
但是,在解析时没有指定x是整数变量而不是过程的含义。 因此,在分配逻辑意义时进行语义分析时,就会发现这是不可能的。
因此,将此视为逻辑错误,我们可以说语义错误。