Hola buenas, estoy comenzando adentrándome en el mundo de programación en "C" tengo una leve experiencia en estos temas pero solo de habla, nada de práctica, por lo que he querido ponerme a aprender a programar en C, mi sistema operativo es ubuntu 14.04 además de las complicaciones que ya me esta suponiendo aprender este idioma le añado a que he tenido que cambiar de SO por temas de estudios, es decir soy novato en ubunto pero por ahora me las apaño. Y aquí viene mi problema:
Estoy empezando a hacer programas con C tipo "hola mundo" y cosas mas novatas del mundo pero al compilar con gcc o con Geany este codigo:
#include <stdio.h>
int main()
{
int num1;
printf( "El tipo int ocupa %i bytes\n", sizeof(int) ); return 0;
}
Pues me da los siguienetes errores
gcc -Wall -c "int.c" (en el directorio: /home/natske/Practicas C/Hola Mundo)
int.c: In function ‘main’:
int.c:7:6: warning: format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]
printf( "El tipo int ocupa %i bytes\n", sizeof(int) );
^
int.c:5:10: warning: unused variable ‘num1’ [-Wunused-variable]
int num1;
^
La compilación ha terminado con éxito.[/i]
Ya , ya se que probablemente no es un código del cual vaya a depender durante todo mi aprendizaje pero me gustaría saber que estoy haciendo mal para no volver a cometerlo.
Un saludo y gracias por vuestra atención.
___edited___
seleccion de codigo - C
Estuve mirando tu respuesta , pero al compilarlo me sigue dando el mismo error pero esta vez envez de con i% con d% y también con %f
El problema podría venir de una mala instalación de la librería o de que el gcc no usa la variable int num1; y el comando de sizeof(int) ?
___add___
¡Resolví el problema!
Según estuve leyendo en la linea en la que resuelve la variable yo uso %i o %d o %f pero en muchos compiladores , en gcc por ejemplo se debe de usar %zu y cuando al principio defino la variable con "int num1;" según he estado mirando es como si no hiciese nada osease que no sirve para absolutamente nada por lo que también daba error, quitando esto y cambiando lo otro quedaría compilado el programa sin ningún problema por lo que quedaría así:
#include <stdio.h>
int main()
{
printf( "El tipo int ocupa %zu bytes\n", sizeof(int) ); return 0;
}
Muchas gracias de todos modos
:) :)
Y lo de guardar sizeof() como una variable temporal para la depuración no se lleva? :-*
¡Resolví el problema!
Según estuve leyendo en la linea en la que resuelve la variable yo uso %i o %d o %f pero en muchos compiladores , en gcc por ejemplo se debe de usar %zu y cuando al principio defino la variable con "int num1;" según he estado mirando es como si no hiciese nada osease que no sirve para absolutamente nada por lo que también daba error, quitando esto y cambiando lo otro quedaría compilado el programa sin ningún problema por lo que quedaría así:
int num1 no sirve para nada a menos que le asignes un valor y sustituyas int de sizeof() por esa variable, puedes tomar una variable del entorno con fgets() por ejemplo y guardarla en num1.
EDITO: mejor un scanf() por que toma valores como int/double en vez de fgets()/gets() que necesitaria una conversion de tipo.