› Foros › Multiplataforma › Desarrollo
auto double int struct break else long switch case enum
register typedef char extern return union const float short
unsigned continue for signed void default goto sizeof volatile do if static while
// Una linea
/*
Pudiendo ocupar varias lineas
Se cierra con la secuencia */
#define PI 3.14159
signed long a = 10; //Si el valor que le demos va a ser pequeño, es un gasto innecesario de memoria usar este tipo (mas en concreto el doble)
unsigned long a=123456; //Este si que seria un valor para usar en este tipo
signed short b = -257; //MECC!!!! ERROR acabamos de producir un desbordamiento
unsigned short b = 255 //Perfecto pero si sube uno mas provocara un desbordamiento
signed int c= -32764 //Al limite otra vez, pero fijese que si le cambiamos el signo si que producimos un desbordamiento
unsigned int c = 13 //Lo mismo que el ejemplo
enum Color { rojo,azul,amarillo=0}; //Mas abajo explico la enumeracion
char vocal='a'; //Las comillas simples son para caracteres sueltos, esto es un literal
char vocal=97; //97 es el valor ASCII de la a
char nombre="Carlos"; //Las palabras compuestas de mas de una letra se encierran entre comillas dobles, y esto tambien es un literal
float a = 1.234F; //La F indica que el numero asignado es Float (obligatorio)
float a = 2.5e+5F; //asignado en notacion cientifica 2.5*10^5
double b = 1.234; //Sin necesidad de una letra para indicar tipo
double b = 2.5e-5 // 2.5 * (1/10)^5 = 0,000025
char a = "Te digo "trigo" por no decirte "Rodrigo"" // La salida sera: Te digo "trigo" por no decirte "Rodrigo"
typedef int entero;
typedef unsigned long ulong;
const float pi=31415927E-6F;
long(largo,entero): longitud 32 bits, almacena datos en un rango de 0<>2^32 sin signo y 2^16-1 <> -(2^16) con signo.
int (integer,entero): longitud 16 bits, almacena datos en un rango de 0<>2^16 sin signo y 2^8-1 <> -(2^8) con signo.
short(¿corto?,entero): longitud 8 bits, almacena datos en un rango de 0<> 2^8 sin signo y 2^4-1 <> -(2^4) con signo.
PauSaDRaMaTiCa escribió:Si eso tenia yo en la documentacion que he seguido pero he pensado que era un error pues entonces el long y el int almacenan lo mismo, en breves lo corrigo. Y molestarme?? too lo contrario gracias, gracias y gracias. Como he dicho hace mucho que no tocaba c y esto me ta sirviendo para volverme a poner al dia, ahora bien atreverme con la negrita....tengo miedo de cascarla.
Asias hermes y a Jvf por lo del hexadecimal que yo ni cuenta me he dado (y eso que me gustan las mates)...
Hermes escribió:
OK. Siendo así, podrias añadir un tipo compuesto: long long.
long long equivale a 64 bits (aunque hay que recordar que estas longitudes son dependientes de la plataforma, aunque este valor es el mas estandarizado)
Podemos definir una constante como 1000LL
Atrevete con la negrita, que no te la vas a cargar y es divertido .
Mola que alguien se ponga a hacer un cursillo de C para los principiantes, pero ya que se supone va orientado hacia consolas, no dejes de explicar la importancia de alinear los datos, sobre todo en los structs ya que los procesadores RISC con los que van equipados nuestras maquinas, no admiten lecturas/escrituras de memoria desalineadas con respecto el tipo que queremos leer (por ejemplo, un int debe estar alineado a 4, siendo los offset de memoria validos xxxx0, xxxx4 , xxxx8, xxxxC)
Esto en principio, sería programacion avanzada, pero cuando trabajamos en consola hay que tenerlo MUY presente y por tanto, mas vale tenerlo en cuenta desde el principio .
En los compiladores GNU, se puede usar __attribute__ ((__packed__)) a la hora de definir un struct para que el compilador trate el acceso a esas variables utilizando lecturas o escrituras byte a byte, aunque tambien se puede especificar de forma generica, usando #pragma
#pragma 1, estableceria los accesos a los datos usando rutinas de lectura/escritura byte a byte , mientras que #pragma 0 se usaria para restablecer el modo de acceso normal.
En fin, espero que estas notas aclaren un poco el siempre espinoso asunto de los accesos alineados, pues es muy común observar fallos de este tipo, sobre todo en los structs y usando punteros, aunque son muy sencillos de eviar cuando se programa teniendo esto siempre presente
Esto es como si voy a aprender a conducir el coche en un pais nordico, en pleno invierno y con las carreteras heladas... ¿sería conduccion avanzada que el profesor me enseñara como corregir un derrapaje sobre hielo o en estas condiciones tan malas sería algo basico?
PauSaDRaMaTiCa escribió:
Primero tienes que aprender a:
Encender el coche
Regular los espejos
Manejo del embrague....
Tienes toda la razon, pero va a haber dos puntos cruciales:
Yo, solo he programado para pcs.
Aun no hemos llegado a los structs : P (me gustan los smilies antiguos).
Aun recuerdo aquello de ver divx en la ps2?? imposible.... asi que tu opinion (como la de los demas, no te creas) no va a caer en desmerito, sino que me parece que es un tema txungo para un novel, pues ellos no conocen nada de arquitectura y ahi radica el problema.
Un ejemplo (como tambien te guste la fisica pues mal ejemplo), la teoria del todo habla de la constitucion basica de la materia. Pero para que esta sea posible hace falta imaginarnos un espacio con 26 dimensiones(la unificacion habla de 26 las individuales de 11....) . Si yo te digo que tienes que empezar a pensar no en 4 dimensiones sino en 26 te da un patatus. Pues eso mismo le va a pasar a un novel (es que novato la gente la usa a modo despreciativo muchas veces y no me gusta usarla) como empecemos con cosas mas complejas que una simple estructura de datos.
Como decia calderon: caminante no hay camino, se hace camino al andar.
P.D. esto esta siendo mas divertido de lo que creia. Gracias
Hermes escribió:
Tu no te preocupes, tu haz tu curso como lo tienes pensado y dejame a mi meter mis complementos, pues, hazte a la idea de que te está leyendo gente que no sabe programar y gente que si sabe programar y que seguro que encuentra esto bastante interesante pues, el fallo en los structs y los punteros es MUY habitual, sobre todo en aquellos que hemos empezado con maquinas que no tenía este problema (PC)
Ademas, yo creo que si en este cursillo se encuentra informacion 'que no viene en los libros' se convierte en doblemene util y si encima, nos lo pasamos bien dando nuestros puntos de vista.... ¿que mas podemos pedir?