UTNianos

Versión completa: Dudas ejercicios final Sintaxtis
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola! Tengo unas preguntas si alguien me puede ayudar, con algunos ejercicios de finales de sintaxis, muchas gracias!!

1) Sea la funcion ANSI C:
unsigned int XX (const char *s, int c)
{
unsigned int i, n;
for(i=n=0 ; s[i]!='\0' ; i++) if(s[i]==c) n++; return n;
}

Cantidad de palabras reservadas: 10
Cant de Identificadores: 15
Cant de constantes: 2
Cant de otros lexemas: 26 POR QUE DA ESTO?
Cant de ungetc que realiza scanner: 29 POR QUE DA ESTO?

2) Sea inta=3; Por que la expresion ++7 * a es semanticamente incorrecta?

3)Cual es la salida y que numero retorna el siguiente programa en ANSI C:
#include <studio.h>
int main(void) {
int i=2, *pi=&i;
printf("%.1f\\n", 1+*pi);
return i++;
}
Salida: 3.0\n POR QUE? No seria 3.1f\ lo que muestra?
Retorna: 2 POR QUE? No seria 3 la salida, si i=2 y se retorna i++?

4) Describa la semantica de la funcion segun Pratt de la funcion ANSI C:

int XX (double z) { if (4) printf("1234"); else printf("0"); return14; }

RTA: Muestra por pantalla 1234 y retorna 14. No se que estoy entendiendo mal, pero cuando hace el if(4), eso devuelve un false, y no deberia imprimir nada.


Se agradece!!
2) El operador ++ tiene que estar acompañado de un LValue

3)%.1f/n es el formato de salida que se le da a la expresion, es decir que al numero que esta en la expresion (1+*pi) se le agrega una posicion decimal. No te olvides que la doble barra (//) sirve para imprimir los simbolos que hacen referencia a secuencias de escape, por eso no es nueva linea sino que solo muestra por pantalla eso. Ejemplo \\t muestra por pantalla \t. Y no estoy seguro pero si devuelve 2 debe ser porque el operador ++ esta al lado derecho.

4) Las constantes en un ciclo o condicional se toman como verdaderos siempre. Algo como 5 && 6 es verdadero

Y disculpá el primero pero ese nunca me quedó muy en claro roll
1) no me acuerdo

2) tampoco, debe ser por el tema de lvalue.

3) en principio es como te dicen arriba.

Y retorna 2 pq al estar del lado derecho el ++ es post incremento por lo que dsp de ejecutarse la liena se incrementa la variable, si fuera ++i se incrementaria antes (pre incremento) y se mostraria 3.

4) Todo valor distinto de 0 es true. 0 && 5 es falso, pese a ser 0 una constante, ya que 0 es falso.

Saludos
URLs de referencia