[英]Is this a semantic error or the syntax error ?
#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
這是語義錯誤還是語法錯誤?
語義。 如果x
是一個帶有1個參數的函數,那將是合法的語法 - 但它只是一個int
。
如果你這樣做,那將是一個語法錯誤:
int x, y;
y=x((5;
return 0;
我會說這是語義錯誤,特別是類型錯誤。 令牌序列y = x(5)
格式良好, x(5)
部分被解析為函數調用表達式。 錯誤是x
不計算函數指針,而是計算為int
。
如果是語法錯誤,就會這么說。 這是一個語義錯誤。 這完全取決於代碼中標識符的含義。
它會清除語法分析通過,因為它只是檢查天氣有沒有語法錯誤。 我的意思是y=x(5);
,
它表示傳入函數x的5和值返回y。
但是,在解析時沒有指定x是整數變量而不是過程的含義。 因此,在分配邏輯意義時的語義分析中,它會發現這是不可能的。
因此,將此視為邏輯錯誤,我們可以說這是語義錯誤 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.