[C] Typeof - IstanceOf

di il
10 risposte

[C] Typeof - IstanceOf

C'è un modo per confrontare se un tipo è diverso da un altro tipo?
Esempio come i parametri passati ad una scanf ?

10 Risposte

  • Re: [C] Typeof - IstanceOf

    In C una cosa simile non esiste. Esiste una cosa del genere in GCC:
    int x = 1;
    typeof(x) y = 2;
    Tuttavia, non esiste un typeof in linguaggio C.
    D'altra parte.. Cosa dovresti farci?
  • Re: [C] Typeof - IstanceOf

    ES banale:
    
    #include <stdio.h>
    #include <stdlib.h>
    
    void main(){
    int a,b, sum;
    printf("INSERISCI IL PRIMO NUMERO\n");
    scanf("%d",&a);
    printf("INSERISCI IL SECONDO NUMERO\n");
    scanf("%d",&b);
    sum = a+b;
    printf("LA SOMMA E': %d\n",sum);
    }
    
    
    Non posso verificare se uno dei due operandi è un char o NULL ?
    Per poter gestire l'eccezione più facilmente.
    Sono troppo abituato a Java
  • Re: [C] Typeof - IstanceOf

    C non è Java ... ha caratteristiche diverse ed sbagliato utilizzare un linguaggio pensando ad altri.

    La scanf restituisce un valore per indicare problemi di input (vedi la documentazione).

    Se non restituisce il valore corretto, pulisci il buffer e ripeti l'input ...
    
    while(scanf("%d",&a) != 1) 
    	while(getchar() != '\n');
    
  • Re: [C] Typeof - IstanceOf

    Puoi controllare il valore di ritorno della scanf (se è uguale a 0, allora si è verificato un errore durante la lettura).
    Guarda la documentazione ufficiale, in particolare la sezione "Return value":
  • Re: [C] Typeof - IstanceOf

    Grazie mille. Siete stati chiarissimi. Quindi in C non esistono neppure i blocchi try-catch.
  • Re: [C] Typeof - IstanceOf

    Non in C, ma le exception sono presenti in C++
  • Re: [C] Typeof - IstanceOf

    Guarda che il C è stato "inventato" quando molti in questo forum non erano nati ...

    Le eccezioni (try..catch) le trovi in C++ ...
  • Re: [C] Typeof - IstanceOf

    In effetti è considerato di medio livello, parente stretto dell'assembly.
    Io sono coetaneo di Java. Java ha semplificato di molto la vita dei programmatori, ma mi rendo conto che C e assembly sono sempre fondamentali e non trascurabili.
  • Re: [C] Typeof - IstanceOf

    Ultima cosa, quindi il ciclo:
    
    while(getchar() != '\n');
    
    sarebbe un ciclo attivo che attende la mia pressione del tasto Invio affinchè ritorni al loop precedente dello scan??
  • Re: [C] Typeof - IstanceOf

    Quel ciclo serve a pulire il buffer, cioè a cancellare tutto quello che l'utente ha inserito. Mettiamo che tu ti aspetti tre interi, e l'utente inserisce abc 27 3. La scanf si aspetta un intero, incontra una stringa, si ferma e ritorna 0. A questo punto però il resto dei valori è ancora nel buffer, e influenzerà le successive richieste di input.
    Perciò, con getchar() svuoti il buffer un carattere alla volta, fino ad incontrare l'invio, cioè la fine del buffer.
Devi accedere o registrarti per scrivere nel forum
10 risposte