2012-01-10 15 views
5

El siguiente método no se puede ejecutar en Java porque la variable i puede permanecer sin inicializar en el momento de su uso. ¿Es esto un problema de sintaxis o semántica?¿Problema de sintaxis o semántica?

public int odd(boolean b){ 
    int i; 
    if(b){ i = 3;} 
    return i; 
} 

Hubiera pensado que sería una semántica, pero según mi instructor, es un error de sintaxis. ¿Es eso correcto, y por qué?

+0

Bueno, ¿por qué es importante? Ninguno de los dos obtendrá código de trabajo. – Piskvor

+1

Tiene que ver con la optimización del compilador, el compliler encuentra posibles códigos inalcanzables como –

Respuesta

8

Es un error detectado por el compilador de Java, pero es no un error de sintaxis; es perfectamente válido según la gramática de Java. Se detecta en etapas posteriores de análisis, lo que lo convierte en un error semántico.

Dicho esto, parece que su instructor quiere definir cualquier error de compilación como un error de sintaxis, y probablemente quiera que "error semántico" signifique algo que no funciona en el tiempo de ejecución. Dado que el instructor califica la tarea, estás obligado a aceptar sus definiciones (incluso si están completamente equivocadas, como en este caso;)).

+0

¡Muchas gracias por su respuesta! – Adeeb

0

Java tiene una sintaxis estrictamente definida para declarar variables locales, y en su ejemplo de código no lo está siguiendo.

así que en java, se convierte en un error de sintaxis.

refieren esto: http://c2.com/cgi/wiki?SyntaxVsSemantics

y esto: http://wiki.answers.com/Q/What_are_the_Differences_between_syntax_and_semantic_error

+0

¿Qué parte de la sintaxis de Java se infringe? –

+1

Esa tiene que ser la * peor * página en c2 que he visto alguna vez. ¡Qué galimatías! –

+0

@DaveNewton: la variable local no está definida correctamente. – Azodious