#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
这是语义错误还是语法错误?
4条答案
按热度按时间myzjeezk1#
如果
x
是一个带1个参数的函数,这将是合法的c语法--但它只是一个int
。如果你这样做的话,这将是一个语法错误:
k3fezbri2#
我会说这是一个语义错误,具体来说,是一个类型错误。令牌序列
y = x(5)
良好,x(5)
部分被解析为函数调用表达式。错误是x
没有计算为函数指针,而是计算为int
。y0u0uwnf3#
如果是语法错误,它会这么说。这是一个语义错误。这都是关于代码中标识符的含义。
kse8i1jr4#
它会清除语法分析通道,因为它只是检查是否有语法错误。我的意思是
y=x(5);
,它说5 in传入了函数x,并将值返回给y。
但是,在解析时没有分配x是整数变量而不是过程的含义。因此,在语义分析中,当分配逻辑含义时,它知道这是不可能的。
所以,考虑到这是逻辑错误,我们可以说这是语义错误。