Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: rosky en 21 Enero 2017, 21:35 PM

Título: Duda con un printf de caracteres
Publicado por: rosky en 21 Enero 2017, 21:35 PM
Hola a todos, tengo una dudilla con este código:
#include <stdio.h>
int ff (int a, int b) {
if (a <= b/2) { return 1; }
else { return 0; }
}
void main () {
char msg[]="Informatica Aplicada";
int a = sizeof(msg)/sizeof(msg[0]), b=0;
do {
if (ff(b, a) == 0) {
printf("|%c|", msg[b]);
}
++b;
} while (b<a-1);
printf("\nFin ;-)\n");
}



En el printf, lo que muestra por pantalla,no se por qué me aparece por pantalla esto:
| |, es decir, el primer caracter del do while, cuando b en ese momento vale 11, no entiendo pr qué vale 11, no se si me explico. Un saludo a todos y gracias de antemano.
Título: Re: Duda con un printf de caracteres
Publicado por: ivancea96 en 21 Enero 2017, 21:55 PM
a = 21
21/2 = 10
Por tanto, solo escribirá los caracteres que sean mayores que 10 (empezando por el 11, el espacio)
Título: Re: Duda con un printf de caracteres
Publicado por: rosky en 21 Enero 2017, 23:09 PM
pero en qué momento aparece la división 21/2? No es b/2 que es 0? saludos.
Título: Re: Duda con un printf de caracteres
Publicado por: engel lex en 21 Enero 2017, 23:44 PM
recuerda los "scope", es decir los alcances en el codigo... lo que stá dentro de las llaves del main es otro scope diferente a las de las llaves del ff, y lo que se declare en una no tiene nada que ver con la otra

imagina que hicieras
ff(p, q)

dentro de ff, p representa el primer agumento que es a y q representa el segundo que es b porque así está definida

int ff (int a, int b)

siempre lo primero será a y lo segundo b

cuando haces

ff(b, a) == 0

no importa si las variables se llaman a, b ,q, p ,j, etc... se llamarán dentro de la función como esté definido en la cabecera de la misma, la primera es a y la segunda es b

por eso es importante al programar colocar nombres claros y legibles a las variables, a algunos les da pereza colocarles nombres largos porque "tardan en escribirlas" pero en realidad no te quita más de 2 segundos por vez que la escribes... más vas a perder con errores como este
Título: Re: Duda con un printf de caracteres
Publicado por: rosky en 21 Enero 2017, 23:46 PM
Aaahh vale, perfecto, ahora lo entiendo, muchas gracias ;-)