#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
Является ли это семантическая ошибка или ошибка синтаксиса?
Ошибка типа недопустимого операнда - это семантическая ошибка, ошибка синтаксиса - ошибка, которая недопустима в соответствии с синтаксисом языка (правильный формат). 'y = x (5);' каждый токен действителен и может корректно анализировать (поскольку 'x' является допустимым именем функции). но вещь 'x' не является функцией, она' int' жизнеспособна, вы не можете называть ее своего рода недопустимым операндом, поэтому семантическая ошибка .-- ПРИМЕЧАНИЕ: '5 (x)' будет синтаксической ошибкой. –
Также добавлен еще один пример семантической ошибки 'int a [10]; * p; 'then' ++ a' будет семантической ошибкой, но не синтаксисом. Хотя '++ p' действительно. –
Чтобы доказать это, попробуйте это: напишите '#include int main() {int y; y = x (5); return 0;} '(удаляется' x' из объявления), затем скомпилируется с флагом '-c' с gcc, который он компилирует. но попытайтесь связать его с файлом заголовка с объявлением 'x' как переменной int, это вызовет ошибку. Следовательно, 'y = x (5);' синтаксически корректно, а не синтаксическая ошибка. –