Autor Tema: Que diferencias hay entre '1' y "1"?  (Leído 2821 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Que diferencias hay entre '1' y "1"?
« en: 27 de Abril de 2015, 00:34:02 »
Bueno la pregunta es corta y solo eso que diferencias hay entre '1' y "1"?

Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
Re: Que diferencias hay entre '1' y "1"?
« Respuesta #1 en: 27 de Abril de 2015, 00:42:56 »
la primera se llama comilla simple y la segunda comilla doble

las comillas simples se usan cuando ya has usado las angulares y las inglesas, y quieres entrecomillar algo dentro de una oración ya doblemente entrecomillada.

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Re: Que diferencias hay entre '1' y "1"?
« Respuesta #2 en: 27 de Abril de 2015, 00:44:50 »
si ! ahora porque una instruccion no entra si ago esto if (valor_B == "0") pero si ago esto si if (valor_B == '0')

Desconectado RodrigoAndres

  • PIC16
  • ***
  • Mensajes: 171
Re: Que diferencias hay entre '1' y "1"?
« Respuesta #3 en: 27 de Abril de 2015, 01:03:43 »
me ganaste ay si ni idea, tocara esperar ke llege alguien ke sepa mas

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Que diferencias hay entre '1' y "1"?
« Respuesta #4 en: 27 de Abril de 2015, 01:30:22 »
con ' se expresa un carácter ascii, y con " un string, que le agrega además el carácter nulo al final. Lo correcto en la comparación de un carácter en la expresión if es con '


Saludos
No contesto mensajes privados, las consultas en el foro

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Re: Que diferencias hay entre '1' y "1"?
« Respuesta #5 en: 27 de Abril de 2015, 01:36:37 »
Gracias y si quiero preguntar por if (valor_B == '200') ? osea se que no es asi pero entonces como se hace?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Que diferencias hay entre '1' y "1"?
« Respuesta #6 en: 27 de Abril de 2015, 02:33:45 »
No se por que harias eso.

Todo depende de el tipo de variable que sea valor_B

Ademas como dijo Suky '2' para un caracter ASCII y "200" para un string.
Un string es una array de caracteres ASCII, asi por ejemplo ese "200" puede ser traducido a

variable[]={'2','0','0','\0'};

El ultimo elemento lo usa C para saber cuando termina el string. Teniendo esto en cuenta quedan 2 opciones:

Si valor_B es un numero (int, etc): Entonces deberias convertir el string '200' en un numero o valor_B en un string y luego comprarlos, si haces el "200" un numero necesitas hacer una funcion que lo haga o usar algunas de las que trae C como por ejemplo atoi() de la librearia stdlib.h

Si valor_B es un string: Tenes que comparar elemento a elemento, podes usar la funcion de C strncmp() de la libreria string.h o podes crear una funcion que pase por todos los valores y devuelva un 0 o un 1 segun si son iguales o no.

Codigo que saque de internet para comprar 2 strings (no lo probe):
Código: C
  1. int compare_string(char *first, char *second) {
  2.    while (*first++ == *second++) {
  3.       if (*first == '\0' || *second == '\0')
  4.          break;
  5.     }
  6.  
  7.    if (*first == '\0' && *second == '\0')
  8.       return 0;
  9.    else
  10.       return -1;
  11. }

PD: Suky esta vivo  :-/
« Última modificación: 27 de Abril de 2015, 02:57:29 por KILLERJC »

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: Que diferencias hay entre '1' y "1"?
« Respuesta #7 en: 27 de Abril de 2015, 02:47:24 »
Citar
PD: Suky esta vivo  rebotando

he visto muchos post y programitas suyos cuando empece en la universidad, pero es la primera vez que lo veo hablar desde que estoy en el foro xd, tampoco es que lleve mucho la verdad
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Re: Que diferencias hay entre '1' y "1"?
« Respuesta #8 en: 27 de Abril de 2015, 20:51:55 »
No se por que harias eso.
Es que en mi celular envio datos de la posicion de un slider en app inventor como texto y al resivirlos quiero hacer algo con esos datos, si resivo un '0' hasta '9' no hay ningun problema pero si es un valor mayor no puedo tratar ese valor porque no se como tratarlo.

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: Que diferencias hay entre '1' y "1"?
« Respuesta #9 en: 28 de Abril de 2015, 19:07:47 »
O también, si son dos cadenas las que compararas, podrías incluir la librería string.h y usar la función strcmp para comparación de cadenas. Si estas usando CCS, checa la ayuda del compilador, ahí viene bien documentada la función y me parece que en otros compiladores también existe esa función.

Saludos.
Nunca se deja de aprender

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Re: Que diferencias hay entre '1' y "1"?
« Respuesta #10 en: 29 de Abril de 2015, 19:45:53 »
Bueno tengo este codigo pero no consigo hacer lo que quiero...

Código: [Seleccionar]
char valor_B;

void serial_isr(){

valor_B=getc();

switch (valor_B)
      {
      case 'A1':
      Output_high(PIN_D0);   
      break;

tengo un slider en un apk de app inventor, el slider esta configurado desde 0 hasta 9 en su recorrido y antes de que envie la posicion de 0 a 9 envio una letra esto es para saber que slider estoy manejando, lo que quiero es poder "leer" o tratar  'A1' que seria la posicion 1 del slider A, no llego a poder hacerlo y no puedo entender desde mi conocimiento basico... algun alma piadosa pleace  :(

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Que diferencias hay entre '1' y "1"?
« Respuesta #11 en: 29 de Abril de 2015, 22:10:22 »
'A1' son 2 bytes, es decir son 2 datos. Primero llega la 'A' y luego el '1'

valor_B=getc();

Ahi guardaria A en valor_B.
Asi que podrias hacer algo asi (Realmente no se si funcionaria, pero es para que tengas una idea):

Código: [Seleccionar]
valor_B = getc();

if (valor_B =='A')
{
    valor_B = getc();
    switch(valor_B)
          {
           case '1':
                     Output_high(Pin_d0)
                     break;

Es decir, primero me quedo esperando hasta recibir algo, cuando recibo algo recien ahi salgo de esa seccion y pregunto que recibi. Si es una 'A' Entro al if, ahi vuelvo a esperar el nuevo dato que podria ser el numero de 0 a 9

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Re: Que diferencias hay entre '1' y "1"?
« Respuesta #12 en: 29 de Abril de 2015, 22:12:44 »
y si no funciona podria pasar valor_B a string? con que funcion o como se hace?

Desconectado MINDFIELD

  • PIC16
  • ***
  • Mensajes: 139
Re: Que diferencias hay entre '1' y "1"?
« Respuesta #13 en: 29 de Abril de 2015, 23:17:28 »
que es switch? para que sirve?
« Última modificación: 29 de Abril de 2015, 23:23:20 por MINDFIELD »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Que diferencias hay entre '1' y "1"?
« Respuesta #14 en: 30 de Abril de 2015, 00:11:43 »
valor_B es un caracter ASCII y llega desde la UART, en ese ejemplo.

Creo que es mas simple asi, pero si queres hacer un string y luego comparar, entonces deberias esperar a que lleguen todos los datos e ir guardandolos.
Pero el micro no sabe cuando comienza un dato o que longitud tiene. Entonces tendrias que enviar mas cosas, como un byte de comiezo + un byte que indique la cantidad de datos, o un byte de final

Ejemplo si quisiera mandar un 'A1'

Start   Cant     Dato
 0xFF   0x02   0x41 0x31

o

DATO-----  Final
0x41 0x31 0xFF

Esto lo vas guardando en un array

char valor_B[4];

Código: C
  1. i=0;
  2. while(1)
  3. {
  4.  valor_B[i] = getc();
  5.  if (valor_B[i]==0xFF)
  6.      {
  7.       valor_B[i]='\0';
  8.       break;
  9.      }
  10.  i++;
  11. }

Creo que algo asi lo haria.

--------------

Un switch es como varios if anidados. Esto es basico en C

Un equivalente por ejemplo de esto:

Código: C
  1. switch(valor_B)
  2.    {
  3.     case '1':
  4.                 xxxxxx;
  5.                 break;
  6.     case '2':
  7.                 yyyyyy;
  8.                 break;
  9.     default:
  10.                 zzzzzz;
  11.                 break;
  12.    }

es lo mismo que :
Código: C
  1. if (valor_B=='1')
  2. {
  3.   xxxxxx;
  4. }
  5. else if(valor_B=='2')
  6.     {
  7.       yyyyyy;
  8.     }
  9.     else
  10.     {
  11.       zzzzzz;
  12.     }
Tenes que tener ojo que los if no pueden comparar un string ( valor_B == "A1"  <- NO SE PUEDE) igual que en los switch solo se puede 1 solo caracter y no un string.

Vuelvo a repetir, un string es un array, vector como quieras llamarlo, una coleccion de bytes ( en caso de una string de caracteres, rempresentados en ASCII, pero siguen siendo bytes)
« Última modificación: 30 de Abril de 2015, 08:43:08 por KILLERJC »


 

anything