簡體   English   中英

這是語義錯誤還是語法錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM