Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1

    Esercizio assegnazioni (Linguaggio C)

    Non so se ho risposto bene a questo esercizio mi date una mano?ù

    Siano b e i dichiarate come segue:

    enum {FALSE, TRUE} b;

    int i;

    Considerare le seguenti istruzioni:

    a) b=TRUE;
    b) b=i;
    c) b++;
    d) i=b;
    e) i=3*b+1;

    Quali istruzioni sono legali? Quali sono sicure (ossia hanno sempre un risultato che ha senso)?

    Io ho risposto che sono tutte legali ma quella sicura è solo la "a" in quanto le altre assegnano valori che non conosciamo... Se mi sbaglio vi prego di correggermi... Grazie

  2. #2
    Probabilmente per "legali" si intendono quelle espressioni consentite dalla semantica del linguaggio, oltre che dai vari compilatori.
    Il problema non risiede tanto nei "dati non conosciuti", quanto nel tipo di dati utilizzati: è evidente che non è logicamente corretto uguagliare e/o confrontare tipi di dato diversi, nella fattispecie boolean e integer.
    "Memento audere semper"

    IBM Europe - Italy Group

  3. #3
    Con enum b assume comunque valore 0 o 1 stampandolo a video... Quindi qual'è la risposta corretta? Cioè ho sbagliato o meno? La domanda è quelle che hanno senso penso in questo caso e quindi penso che abbia senso solo la a... O sbaglio? Le altre ho verificato e a livello sintattico sono tutte corrette quindi penso siano tutte legali... Grazie comunque della risposta

  4. #4
    Si, nel C considera ogni elemento dell'enum come int, per cui è lecito confrontare e/o assegnare tale valore a variabili di tipo intero.
    "Memento audere semper"

    IBM Europe - Italy Group

  5. #5
    Ok quindi per quelle che hanno senso è corretto secondo te dire che è solo la a?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma tu cosa hai risposto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Se leggi il mio primo post ce scritto alla fine

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Sono tutte legali ma sicure a, d
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    È "sicura" solo la a, dato che in tutte le altre si ha come "sorgente" dell'assegnamento una variabile non inizializzata. L'unica eccezione si ha nel caso in cui b e i siano variabili globali, nel qual caso sono inizializzate automaticamente a 0 (quindi FALSE per b e 0 per i); in quest'ultimo caso, sono tutte istruzioni ben definite.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Grazie, ho seguito il tuo stesso ragionamento anche se non avrei saputo spiegarlo come lo hai spiegato tu... Grazie

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.