5
#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

4 に答える 4

4

セマンティックエラー、具体的には型エラーだと思います。トークン シーケンスy = x(5)は整形式であり、そのx(5)部分は関数呼び出し式として解析されます。エラーはx、関数ポインタではなく、int.

于 2013-11-13T09:00:24.830 に答える
2

構文エラーがないかどうかをチェックするだけなので、構文解析パスをクリアします。つまりy=x(5);

関数 x に 5 が渡され、値が y に返されることが示されています。

ただし、構文解析時に x がプロシージャーではなく整数変数であるという意味は割り当てられません。したがって、論理的な意味が割り当てられている場合の意味分析では、これは不可能であることがわかります。

したがって、これを論理エラーと見なすと、意味エラーと言えます。

于 2013-11-13T10:23:30.683 に答える