Comportamenti indefiniti in C

5

Recentemente mi sono imbattuto in una serie di funzioni non definite in C, una delle quali è la seguente:

link

Qualcuno potrebbe dirmi cosa devo rispondere quando viene posta una domanda del genere durante gli esami online (e Nessuno di questi / Non definito l'opzione non è disponibile)?

Inoltre, potresti indicarmi un documento che specifica i comportamenti non definiti più comunemente riscontrati in C?

Grazie.

    
posta SHOUBHIK BOSE 02.01.2012 - 08:35
fonte

2 risposte

10

Puoi eseguire una delle seguenti operazioni:

  1. Controlla la risposta "giusta" (quella che la tua esperienza con il professore ti dice che vuole vedere). A volte i professori pensano di sapere meglio quando non lo fanno. Puoi discutere (e ottenere un successo con il voto) o semplicemente lasciargli ascoltare quello che vogliono sentire.

  2. Avvicinati al professore e solleva il problema. Fai una domanda durante l'orario d'ufficio o anche in classe. Questo è quello che farei. Non vuoi conoscere il mio GPA.

  3. Scrivi (se possibile) una risposta aggiuntiva "Questo è un comportamento non definito per standard, ma credo che la maggior parte dei compilatori farebbe ..." e procedere con # 1.

Generalmente, se i professori ti mettono in questa posizione significa molto sulle loro conoscenze e qualifiche. Ma, non penso che tu voglia metterti in una posizione di quel fastidioso studente che fa vergognare il professore. L'ho fatto due volte, in una classe ho finito con A +, in un'altra con appena una B (dopo aver ottenuto il 100% nella prova finale). Non sai mai come lo prenderanno. Alcuni sono pronti ad ammettere un errore, alcuni saranno molto cattivi.

    
risposta data 02.01.2012 - 08:57
fonte
3

Presumo che tu ti stia riferendo a un esame online in cui non c'è un professore con cui parlare e nessun margine per scrivere un'obiezione.

Quindi, quello che vorrei fare nei tuoi panni è che sceglierei la risposta che più strettamente corrisponde a "indefinito" (qualcosa come "proibito" o "crash") e se nessuno di questi è disponibile, selezionerei solo un indovina. Quindi, aspetterò che il mio esame venga valutato, e se la mia risposta a questa domanda è contrassegnata come errata, la porterei dal preside.

Inizia a cercare l'e-mail del preside da ora.

Modifica

L'esempio più famoso di comportamento non definito in C è questo:

int somefunction( int x, int y );
...
int a = 5;
int result = somefunction( a, a++ );

La domanda è "cosa c'è di sbagliato nella chiamata sopra?"

Mi sono imbattuto in questa intervista una volta, ma era solo per i punti bonus, non si aspettavano che il candidato lo sapesse. La risposta è un comportamento indefinito perché C non garantisce che 'a ++' verrà valutato dopo 'a'. Quindi, somefunction può essere chiamato con x=5, y=6 o può essere chiamato con x=5, y=5 o x=6, y=6 . ( o una balena e una ciotola di petunie potrebbero cadere dal cielo < - MODIFICA: no, questa non è una possibilità.)

    
risposta data 02.01.2012 - 09:54
fonte

Leggi altre domande sui tag