| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
Mijail
Registrado: 02 Jul 2007 Mensajes: 30
| Publicado: 09/08/2007 10:37 am | | | Título: Una Duda |
| existe algo parecido a esto? que funcione claro...xD
| Código: | ... if ((variable)=char) { clrscr(); printf( "Eso es una letra!'" ); getch(); } ...
|
uso dev-c++
gracias!! |
|
| Volver arriba | |
 |
worm
Registrado: 04 Jul 2007 Mensajes: 50
| Publicado: 09/08/2007 12:15 pm | | | Título: |
| Wenas,
¿Lo que deseas es determinar si la variable "variable" es de tipo char y en base a eso generar una determinada accion?
Si es asi, no estoy seguro que utilizando solo C estandar se pueda realizar, ya que el compilador al momento de generar el ejecutable no guarda ese tipo de informacion. Creo que utlizando unas componentes llamadas Corba o COM(+) (esta ultima de micro$oft), puedes hacer eso.
Ahora, por ejemplo en dotNet eso es muy facil de hacer, puesto que el binario de dotNet si guarda ese tipo de informacion, es decir, el tipo del objeto, la lista de propiedades, lista de metodos, sus visibilidades, firma de la clase (public, abstract, etc), si es una clase base, si es una interfaz, de que clase hereda, etc, etc, etc, y se realiza a traves de algo denominado Reflection
Ahi te ves _________________ La respuesta a tus inquietudes es Linux |
|
| Volver arriba | |
 |
Pantalàimon_
Registrado: 17 Jul 2007 Mensajes: 90
| Publicado: 09/08/2007 1:34 pm | | | Título: |
| Si lo que quieres hacer es lo que dice worm entonces ni idea. Si quieres discriminar entre los simbolos que van desde 'a' hasta 'z' y de 'A' hasta 'Z' de los caracteres '0' a '9' se puede hacer tranquilamente sabiendo el código ASCII.
Además, que yo sepa, no hay tanta diferencia entre un char y un int. A los dos les puedes aplicar las mismas operaciones aritméticas(+,-,*,/,%). Simplemente que el tipo char ocupa un byte mientras la variable entera ocupa 4 bytes.
Hasta luego! |
|
| Volver arriba | |
 |
|
Mijail
Registrado: 02 Jul 2007 Mensajes: 30
| Publicado: 09/08/2007 2:09 pm | | | Título: |
| | worm escribió: | | ¿Lo que deseas es determinar si la variable "variable" es de tipo char y en base a eso generar una determinada accion? |
Me referia exactamente a eso. Ya veo que no puedo.
Gracias por la ayuda  |
|
| Volver arriba | |
 |
Pantalàimon_
Registrado: 17 Jul 2007 Mensajes: 90
| Publicado: 09/08/2007 2:17 pm | | | Título: |
| Lo que me pregunto yo es que utilidad le puedes sacar a eso.
Te reto a que me digas un programa en el cual tenga que utilizar esta tarea  |
|
| Volver arriba | |
 |
Mijail
Registrado: 02 Jul 2007 Mensajes: 30
| Publicado: 09/08/2007 2:23 pm | | | Título: |
| | jajajaja supongo que ninguno, simple curiosidad |
|
| Volver arriba | |
 |
|
Pantalàimon_
Registrado: 17 Jul 2007 Mensajes: 90
| Publicado: 09/08/2007 2:33 pm | | | Título: Re: Una Duda |
| | Mijail escribió: |
| Código: | ... if ((variable)=char) { clrscr(); printf( "Eso es una letra!'" ); getch(); } ...
|
|
Piensa que en este programa que tu dices, previamente ya tendrías que haber definido la variable variable sino no compilaría. Y si en el código mismo ya dices de que tipo es la variable pues ya sabes si pasará por el if o no, entonces el if no tendría ningun sentido, si defines char lo pones y sino no hace falta.
Saludos |
|
| Volver arriba | |
 |
Mijail
Registrado: 02 Jul 2007 Mensajes: 30
| Publicado: 09/08/2007 2:40 pm | | | Título: |
| eing? xD perdona pero es que soy bastante novato
lo de (variable) lo pongo entre parentesis para dar a entender que ahi pongo la variable, no que la variable se llame variable. En el caso del programa donde lo queria insertar la variable era Num, osea que el codigo seria:
| Código: | ... if (Num=char) { clrscr(); printf( "Eso es una letra!" ); getch(); } ... |
|
|
| Volver arriba | |
 |
Pantalàimon_
Registrado: 17 Jul 2007 Mensajes: 90
| Publicado: 09/08/2007 3:18 pm | | | Título: |
| | Pues yo creo que podría encontrar una solución usando cadenas de caracteres. Pero supongo que aún no sabes lo que es un array o vector en C, no? |
|
| Volver arriba | |
 |
|
worm
Registrado: 04 Jul 2007 Mensajes: 50
| Publicado: 09/08/2007 5:50 pm | | | Título: |
| Wenas,
me parece bien que quieras utilizar eso, puedes probar investigando lo que te comente. Ahora, para que te podria servir esto, por ejemplo (basado en dotNet), puedes generar objetos en tiempo de ejecucion, sin siquiera saber su tipo en tiempo de compilacion.
Me parece que deberias investigar al respecto si te interesa, sin importar lo que digan los demas
Ahi te ves _________________ La respuesta a tus inquietudes es Linux |
|
| Volver arriba | |
 |
Mijail
Registrado: 02 Jul 2007 Mensajes: 30
| Publicado: 10/08/2007 3:18 am | | | Título: |
| Ok gracias worm, seguiré buscando información  |
|
| Volver arriba | |
 |
spesmod
Registrado: 23 Ago 2007 Mensajes: 33
| Publicado: 23/08/2007 11:07 am | | | Título: utiliza sizeof() |
| pero que les pasa weyes???? no saben utilizar la funcion sizeof()??? la funcion sizeof() devuelve el tamaño de cualquier variable en numero de bytes, una variable char pesa 1 byte; simplemente has que la condicion sea "si el peso de char es 1 entonces hacer..."
osea esto lo botas a la basura ... if ((variable)=char) { clrscr(); printf( "Eso es una letra!'" ); getch(); } ...
y aces algo como esto
... if (sizeof(variable)=1) { clrscr(); printf( "Eso es una letra!'" ); getch(); } ...
por si las moscas aki te dejo el tamaño de algunas variables en bytes y bits, demas de su rango y de sus despectivos caracteres de impresion:
(por motivos de tipografia la tabla esta recontra chueka asi que espero que la entiendas para tu comodidad copiala y pegala en el bloc de notas y asi la veras mejor )
>>>>>>>>|=======DATO=======|==TAMAÑO==|===========RANGO==========|=IMPRESION=| >>>>>>>>|==================|bytes|bits|==========================|===========| >>>>>>>>|=======CHAR=======|==1==|==8=|======= -128=a=127 =======|=====%c====| >>>>>>>>|==UNSIGNED=CHAR===|==1==|==8=|===========0=a=255 =======|=====%c====| >>>>>>>>|====SHORT=INT=====|==2==|=16=|===== -32768=a=32767 =====|=====%i====| >>>>>>>>|=======INT========|==2==|=16=|===== -32768=a=32767 =====|=====%i====| >>>>>>>>|===UNSIGNED=INT===|==2==|=16=|========== 0=a=65535 =====|=====%u====| >>>>>>>>|=====LONG=INT=====|==4==|=32=| -2147483648=a=2147483647 |====%li====| >>>>>>>>|UNSIGNED=LONG=INT=|==4==|=32=|========== 0=a=4294967295 |====%lu====| >>>>>>>>|======FLOAT=======|==4==|=32=|==== 3.4e-38=a=3.4e+38 ===|=====%f====| >>>>>>>>|======DOUBLE======|==8==|=64=|=== 1.7e-308=a=1.7e+308 ==|==%f=%d=%e=| >>>>>>>>|===LONG=DOUBLE====|=10==|=80=|== 3.4e-4932=a=1.1e+4932 =|===¿¿¿???==|
espero que te sirva hasta la vista. _________________ |--A--Q--U--A--|
|
|
| Volver arriba | |
 |
|
Mijail
Registrado: 02 Jul 2007 Mensajes: 30
| Publicado: 23/08/2007 2:34 pm | | | Título: |
| Uoooo! si gracias!! no se me hubiese ocurrido!  |
|
| Volver arriba | |
 |
Mijail
Registrado: 02 Jul 2007 Mensajes: 30
| Publicado: 23/08/2007 3:41 pm | | | Título: |
| puede ser que esto:
.. if (sizeof(variable)=1) { clrscr(); printf( "Eso es una letra!'" ); getch(); } ...
Sea en realidad esto?
.. if (sizeof(variable)==1) { clrscr(); printf( "Eso es una letra!'" ); getch(); } ...
Es que no me funciona |
|
| Volver arriba | |
 |
v4r3t
Registrado: 06 Mar 2007 Mensajes: 38
| Publicado: 23/08/2007 4:48 pm | | | Título: |
| | claro, para comparar siempre se usa == |
|
| Volver arriba | |
 |
|
|