Spreker 1: Kom ons neem 'n blik by die CS50 biblioteek, spesifiek sy getint funksie. Hier het ons die werklike bron kode vir getint. En sien dat dit nie te lank, en die meeste van dit 'n lus - 'n oneindige lus aan dat - dat slegs terug 'n waarde sodra ons het eintlik gekry wat ons verwag het. Kom ons loop deur dit. Let hier die eerste, die while lus begin. Let volgende dat ons 'n reël van die kode wat eintlik 'n beroep GetString, en slaan die terugkeer waarde in 'n veranderlike, genaamd lyn, string-tipe. Ons doen dan 'n bietjie van 'n gesonde verstand tjek. As lyn == null, dan is ons nuuskierig terug INT_MAX. Nou is dit blyk dat INT_MAX is 'n spesiale konstante reeds verklaar wat bepaal die grootste moontlike int dat jy kan verteenwoordig in 'n program soos hierdie. Nou het ons arbitrêr besluit om terug te keer INT_MAX as 'n brandwag waarde van soorte, een wat ons as voorbehou het beteken 'n fout het voorgekom. So het die prys wat ons betaal, natuurlik, is dat getint kan klaarblyklik nie eintlik terug 'n aantal so groot soos INT_MAX, want selfs as hy wil, wat terugkeer waarde moet regtig word vertolk deur die oproeper - wie is die gebruik van getint - as 'n fout van 'n soort. Volgende, sien dat Ek het verklaar 'n int n en 'n kar c. In hierdie volgende lyn van kode, ek noem 'n funksie genoem sscanf, verby in vier argumente. lyn, wat is die string die gebruiker se getik, "% i% c", wat is 'n formaat string wat ek verwag dat die gebruiker kan tipe, gevolg deur die adres van n, en die adres van c. Nou sscanf se doel in die lewe is inderdaad ' 'n string op soek na die scan bepaalde formaat wat die programmeerder het gespesifiseer as die tweede argument. In hierdie geval,% i is in daar, soos% c. So as sscanf ontmoetings 'n int in die gebruiker se insette, wat int gestoor word binnekant van die veranderlike genoem N, omdat ons verskaf het as die derde argument die adres van N sscanf. Wat beteken dat sscanf inderdaad kan gaan daar en daarin werk die waarde. Nou, in die geval van die gebruiker in iets meer as een of meer syfers - Met ander woorde, 'n kar van 'n soort - dat die tweede veranderlike c, wie se adres ons geslaag het in sscanf as sy vierde argument sal ook ingevul word. Nou is die onderstebo van kontrole vir 'n addisionele karakter van die gebruiker is dat indien hy of sy nie saamwerk nie, en tipes in meer as net 'n int, ons sal in staat wees om dit op te spoor in hierdie wyse, want in daardie geval, sscanf gaan om terug te keer 2, wat beteken dat beide van die plekhouers is gevul met waardes. Maar ons hoop dat sscanf plaas terug 1, wat net beteken dat die gebruiker verskaf 'n int. Wat doen ons as sscanf inderdaad terug 1? Wel, ons onmiddellik vry om die lyn wat die gebruiker getik, en dan het ons onmiddellik n terugkeer, met gekry 'n int. Want as sscanf nie terug 1 en die gebruiker dus nie saamwerk nie, ons nog steeds vry om die lyn, maar ons nou Vra die gebruiker om weer te probeer. En omdat ons nog in daardie anders oneindige lus, die proses sal weer weer begin, en miskien, en Miskien, totdat die gebruiker eintlik bied ons 'n int.