Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Conversione da C a VB

  1. #1

    Conversione da C a VB

    Salve,
    sto convertendo un breve codice da C in VB, ma il primo linguaggio lo conosco meno del secondo!
    Può qualcuno aiutarmi a capire le istruzioni seguenti?

    if (0) { ... segue blocco di istruzioni
    tra parentesi c'è uno zero. Che senso ha questa condizione? Non è sempre vera?

    num = 64 * ((int) cChar - (int) '0');
    dove cChar è un carattere, p.e. "A". Io convertirei questa linea in
    num = 64 * (Asc(cChar) - Asc("0"))
    ma non capisco il motivo di Asc("0")!

    Grazie infinite,
    Nino

    PS Conoscete qualche sito in cui posso trovare le corrispondenze fra le sequenze di escape di C e i codici ASCII ("\r"=13)?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167

    Re: Conversione da C a VB

    Originariamente inviato da Mtu
    Salve,
    sto convertendo un breve codice da C in VB, ma il primo linguaggio lo conosco meno del secondo!
    Può qualcuno aiutarmi a capire le istruzioni seguenti?

    if (0) { ... segue blocco di istruzioni
    tra parentesi c'è uno zero. Che senso ha questa condizione? Non è sempre vera?

    num = 64 * ((int) cChar - (int) '0');
    dove cChar è un carattere, p.e. "A". Io convertirei questa linea in
    num = 64 * (Asc(cChar) - Asc("0"))
    ma non capisco il motivo di Asc("0")!

    Grazie infinite,
    Nino

    PS Conoscete qualche sito in cui posso trovare le corrispondenze fra le sequenze di escape di C e i codici ASCII ("\r"=13)?
    L'istruzione Asc serve appunto ad ottenere il valore nella tabella ASCII di 0. Perchè nel codice C con l'istruzione
    (int) cChar
    fa una conversione (cast) del carattere cChar ad int, quindi al corrispondente valore decimale del carattere A.

    Se tu hai in C la variabile
    char ch = 'a'
    e la casti in int, otterrai il valore 97. In VB fai appunto
    Asc("a") =97

    Se dici che nello specifico non capisci Asc("0") guarda che
    Asc("0") = 48, occhio a non confondere 0 con null.

    ciao.

  3. #3
    Grazie, Level per l'aiuto.

    Ma perchè non scrivere

    num = 64 * ((int) cChar - 48);

    invece di:

    num = 64 * ((int) cChar - (int) '0');

    c'è qualche motivo particolare?

    Sai, infine, il motivo di quel "if (0)"?

    Grazie,
    Nino

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167
    Originariamente inviato da Mtu
    Grazie, Level per l'aiuto.

    Ma perchè non scrivere

    num = 64 * ((int) cChar - 48);

    invece di:

    num = 64 * ((int) cChar - (int) '0');

    c'è qualche motivo particolare?

    Sai, infine, il motivo di quel "if (0)"?

    Grazie,
    Nino
    Bisogna vedere tutto il codice per capirne le singole parti. Scrivere 48 o (int)'0' è identico.
    Comunque l'if(0) non ha senso perchè è una condizione sempre falsa, e quindi la parte interna alle parentesi successive non verrà mai raggiunta. Alcuni compilatori te lo segnalano come errore. Non è che manca qualcosa ? Es: if (x == 0 ) {........}

    ciao.

  5. #5
    Grazie io pensavo che if (0) - è proprio così - fosse sempre vera!

    Ciao,
    Nino

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.