UTNianos

Versión completa: SOS Sintaxis ............
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
A ver si alguien puede explicar un buena vez y claro cuales serian las respuestas correctas para esto, ya que hay otros post parecidos pero no se termina de entender el tema.

Las preguntas son las mismas para los 4 ejemplos :
es sintacticamente correcto para el programador? por que?
es semanticamente correcto para el compilador? por que?
es sintacticamente correcto para el compilador? por que?
es semanticamente correcto para el programador? por que?

ejemplo 1 : for ( ;-4 ; ) ;

ejemplo 2 :
void XX (void) {
int a;
double a;
}

ejemplo 3 :
12=2+3


ejemplo 4:
do 22; while (3) ;
En el ejemplo 1 creo que lo segundo del for es una condición booleana o sea que va a loopear mientras (-4) que es lo mismo que hacer un while(3).O sea,va a chequear si es cero,y como estas poniendo una constante,ergo algo que nunca cambia,te va a loopear infinitamente.Pero creo que el compilador te lo acepta.(CREO,tendría que compilarme un programa pero aunque no haya variables en el area de inicilización o incremento te lo acepta.).

En el ejemplo 2 creo que el compilador te lo toma(es sintácticamente correcto) A vos no te sirve para nada,declaras variables y no las usas NUNCA. de hecho tenés una función totalmente vacía.

En el ejemplo 3 es incorrecto semantica y sintácticamente para programador y compilador porque lo que te dan es una sentencia que:
a) no termina en ";" y se va a romper toda. (error sintáctico)
b) El operador "=" en C es el operador de asignación y no de comparación como en pascal."12" es un número y no una variable.No podés asignarle nada,ni resultados de expresiones aritméticas (como en este caso) ni constantes.(error semántico)

En el ejemplo 4 es incorrecto en ambas maneras.Para ambos.Después del "DO" del Do while va una sentencia de instrucciónes.La forma correcta de ponerlo es

Do { <acciones>} while <condición> en otras palabras,faltan las llaves.22 no es una instrucción válida por lo que el compilador te va a putear hasta en eslovaco cuando intentes usar eso y te va tirar que hay un error.


Y bueno,perdon que no pude hacer un análisis más detallado pero tengo sueño.
Igual no tomés lo que digo Taaan literal porque no di final de sintaxis todavía.
Cualquier corrección a lo que respondi es más que bienvenida.
Si mañana o pasado tengo más tiempo te respondo con más completitud.

Saludos!
Cito:
Do { <acciones>} while <condición> en otras palabras,faltan las llaves.22 no es una instrucción válida por lo que el compilador te va a putear hasta en eslovaco cuando intentes usar eso y te va tirar que hay un error.

Me parece que en éste caso 22 funciona como una instrucción única, entonces no precisás las llaves.
URLs de referencia