>> [Musik spiller]
>> DOUG Lloyd: Hej, så lad os tale om operatører i C.
Så har vi allerede set en i virkeligheden, lig tildelingsoperatoren.
Det giver os mulighed for at bare sætte en værdi i en variabel.
Det er opgaven operatør, enkelt lighedstegn.
For at manipulere og arbejde med værdier og variabler i C,
Vi har en række aktører til vores rådighed, som vi kan bruge.
Lad os tage et kig på nogle af de fælles dem
startende med aritmetiske operatorer.
Som man kunne forvente, kan vi gøre Pretty grundlæggende matematiske operationer i C.
Vi kan tilføje, trække fra, gange, og Divide numre ved hjælp plus, minus, stjerne,
og skråstreg henholdsvis.
Her er et par linjer af kode, som vi gør det.
Så har vi int x er lig y plus 1.
Lad os antage, at et eller andet sted op over denne linje kode
vi havde sagt int y lig 10.
Hvad er værdien af ​​x, efter at jeg udføre denne første linje kode?
Sagde du 11?
Du ville til højre.
Hvorfor det?
Nå, y var 10.
Nogle jeg siger int x er lig med 10 plus 1.
10 plus 1 er 11.
Så værdien 11 får gemt i variablen x.
Ikke alt for dårlig, ikke?
>> Hvad med denne næste linje af kode? x er lig med x gange 5.
Nå, før vi henrettet denne linje kode, x var 11.
Så hvad er værdien af x efter denne linje kode?
Tag et sekund.
Så x er lig med x gange 5.
x var 11.
Så x er lig med 11 gange 5.
Eller 55.
Så hvis du sagde 55, ville du have ret.
>> Nu kan det være lidt forvirrende, men med den måde, opgaven arbejder i C
er værdien til højre får tildelt værdien til venstre.
Så først vi evaluerer x gange 5.
Så 11 gange 5 er 55.
Og så gemmer vi denne værdi i x.
11, der var der før nu overskrives.
Så x værdi er nu 55.
Forhåbentlig det er forholdsvis ligetil.
>> Der er en anden operatør, du har sandsynligvis ikke nødvendigvis hørt
kaldte denne, men du har bestemt arbejdet med i fortiden
hvis du husker dine dage af lange division vej tilbage i folkeskolen.
Det hedder modulus operatør.
Hvad modul gør det giver dig resten
når du opdele to tal sammen.
Så hvis jeg siger 13 divideret med 4, hvad er resten?
Og denne værdi ville blive beregnet af modulus operatør.
>> Så jeg har en linje kode her, int m er 13 mod 4.
Og jeg siger her i en kommentar at m værdi er nu 1.
Hvorfor siger jeg det?
Nå, gør den lange division i din hoved, hvis du bære over med mig for en anden.
Så jeg har 4 divideret med 13.
4 går i 13 tre gange med en rest på 1.
Så dybest set, hele modul operatør gør
er det fortæller dig, når du kløft, får du resten.
Du tror måske, det er faktisk ikke en forfærdelig nyttig ting,
men du vil blive overrasket, faktisk, af, hvor hyppigt, at modulus
Operatøren kan komme i handy.
>> Der er et par problemer vi vil gøre CS50, der beskæftiger sig med det.
Det er også godt for at gøre ting som tilfældige tal.
Så for eksempel, hvis du nogensinde har hørt om et tilfældigt tal generator
der kommer til at give dig en række fra 0 til nogle stort antal.
Men måske du kun virkelig har brug for en række fra 0 til 20.
Hvis du bruger modul operatør på den gigantiske nummer,
bliver genereret af tilfældige tal generator,
du kommer til at tage de enorme værdi, det er, dividere det med 20,
og få resten.
Resten kan kun være en værdi fra 0 til 19.
Så du bruger modul operatør til at tage dette enorme antal
og skære det ned til noget lidt mere meningsfuld.
Jeg er temmelig sikker på, du vil være stand til at bruge både af dem
på et tidspunkt i fremtiden i CS50.
>> Så C giver os også en måde at anvende en aritmetisk
operatør til en enkelt variabel i lidt mere stenografi måde.
Så i forrige dias, vi så x er lig med x gange 5.
Det virkede.
x gange 5 så bliver gemt tilbage i x.
Der er en kortere måde at gøre det, tanke, og det er de syntaks x gange lig 5.
Det er nøjagtig de samme ting som siger x er lig med x gange 5.
Det er bare en lidt kortere måde at gøre det.
Og når du se nogle distributionen kode eller du
se nogle eksempler på kode, der gør ting som dette,
bare være bekendt med hvad syntaksen betyder.
Du helt sikkert ikke har at bruge det, men hvis du gør,
det kan gøre din kode ser lidt slicker.
Og ved, at du også kan bruge nogen af de forskellige operatører, vi har allerede
set før stedet gange.
Man kan sige x plus lig 5, minus lig 5, gange, dividere, og mod.
Alle disse arbejder.
>> Der er også noget der er så almindelige i C
at vi har besluttet at finjustere yderligere.
Forøgelse en variabel med 1 eller formindskelse en variabel med 1
er en sådan fælles thing-- især når vi taler om sløjfer lidt senere
on-- at vi har besluttet i stedet for sige noget i retning af x plus er lig med 1,
eller x er lig med x plus 1, vi har selv kort afleveret, at til x plus plus.
Så x er lig med x plus 1, x plus lig med 1, og x plus plus alle gøre det samme.
De har alle tilvækst x med 1.
Men at forøgelse og formindskelse af 1
er så almindeligt, at vi har plus plus og minus minus
at tillade os at stenografi at selv yderligere.
>> Så lad os skifte gear for sekund og taler om booleske udtryk.
Alle som også er slags falder i den overordnede kategori af erhvervsdrivende.
Men booleske udtryk, modsætning aritmetiske operatorer,
anvendes til at sammenligne værdier.
Så, igen, alle booleske udtryk i C evalueres til en af ​​to mulige værdier,
huske.
Sandt eller falsk.
Det er de eneste to værdier, som Boolean variabel kan tage på.
Vi kan bruge resultaterne af et Boolsk udtryk
i en masse måder i programmering.
Faktisk vil du være gøre dette ganske meget.
>> For eksempel kan vi beslutter, godt, hvis nogle betingelse er sand,
måske vil jeg tage dette forgrene ned min kode.
En betinget, så at sige.
Vi vil lære om dem, snart også.
Eller måske, så længe dette er sandt, vil jeg
at holde gør dette igen og igen og igen.
En løkke.
I begge tilfælde, ved, at vi bruger en boolesk udtryk, en sand eller falsk,
at afgøre, om eller ej at tage en bestemt vej.
Nogle gange, når vi arbejder med booleske udtryk,
vi vil bruge variabler af typen Bool.
Du har måske erklæret en Bool indtastet variabel,
og du vil bruge i din Boolsk udtryk.
Men du behøver ikke altid at gøre.
Da det viser sig, i C, enhver ikke-0 værdi er den samme som at sige sandt.
Hvis du havde erklæret en variabel af typen Boolesk,
og tildeles den værdien sandt, det er det samme som at erklære et heltal
og tildele den værdien 1, 2, 3 eller virkelig nogen værdi
helst andet end 0.
Fordi i C, enhver ikke-0-værdi er sand.
0, på den anden side, er falsk.
Dette kan komme i handy senere at vide,
men bare noget at holde sig for øje.
Vi behøver ikke altid at bruge Boolske typen variabler, når vi
arbejder med booleske udtryk.
>> Der er to hovedtyper af booleske udtryk, som vi vil arbejde med.
Logiske operatorer og relationelle operatører.
Sproget er ikke frygtelig vigtig.
Det er virkelig bare hvordan jeg gruppere dem.
Og du vil helt sikkert, tror jeg, hurtigt indse, hvad en relationel operator er,
baseret på, hvad de er, når vi tale om dem i en anden.
Men du behøver ikke bekymre dig om nødvendigvis huske udtrykket logiske operator
eller relationelle operatør.
Jeg er bare bruger det til gruppen dem på en logisk måde.
>> Så lad os tage et kig på de tre logiske operatorer
at vi vil se en ganske bit i programmering i CS50
og i programmeringen mere generelt.
Logisk OG er sandt, hvis og kun hvis begge operander er sande.
Ellers false.
Hvor betyder det?
Så lad os sige, at jeg på et pege i min kode, hvor jeg har
to variabler, x og y.
Og jeg ønsker at afgøre, om til at gøre noget i min kode
baseret på hvis x er sand og y er sandt.
Jeg ønsker kun at gøre det, hvis begge af dem er sande,
ellers ved jeg ikke ønsker at gå ned, at vej, fordi det ikke kommer til at hjælpe mig.
Hvad jeg kan sige er, hvis x & & y.
Det vil være en logisk Boolesk ekspression sammenligning x og y
og tager en vis vej baseret på, hvad deres værdier er.
Så hvis x er sand og y er sandt baseret på denne sandhed tabel her,
først da vil vi gå den vej.
Hvis x, & & y.
Det er kun true-- den og er kun sand, hvis x er sandt, og y er sandt.
Hvis den ene er falsk, som vi ser sandheden tabellen,
så både x og y er ikke sandt.
Og så er x & & y er falsk.
>> Logisk eller er sandt, hvis og kun hvis mindst én operand er sandt.
Ellers false.
Så logisk OG påkrævet både x og y til at være sandt.
Logisk eller kræver x til at være sandt eller y til at være sandt eller begge x og y til at være sandt.
Så igen, vi slags finde os selv i en situation,
hvor vi kommer til at vores kode, og vi nåede en gaffel i vejen.
Og vi ønsker at gå ned ad en særlig sti, hvis x er sandt
eller Y er sandt, men ikke nødvendigvis hvis begge er sande.
Men muligvis hvis begge er sande.
Så hvis x er sand og y er sandt, vi vil gå den vej.
x er sandt.
En af dem er sandt, ikke?
Hvis x er sand og y er sandt.
Hvis x er sandt, og y er falsk, en af ​​dem er stadig sandt.
Så, x eller y er stadig sandt.
Hvis x er falsk, og y er sandt, en af ​​dem er stadig sandt, ikke?
y er sandt, i dette tilfælde.
Så det er rigtigt, at x eller y er sandt.
Kun hvis x er falsk, og y er falsk vi ikke gå den vej,
fordi hverken x eller y er sandt.
Nu, hvis du søger på skærmen lige nu
og spekulerer på, hvad der symbol er for logisk OR,
det hedder den lodrette bjælke.
Og hvis du kigger på dit tastatur et minut, da jeg gør nu,
det er normalt lige over Enter-tasten, på de fleste tastaturer,
på den samme tast som det omvendte skråstreg.
Det er også normalt ret ud for de firkantede parenteser.
Så kan det være en nøgle, som du har ikke indtastet meget i fortiden.
Men, hvis du nogensinde laver logiske sammenligninger,
som vi vil gøre en meget i kurset, er det
vil være nyttig for finder, at nøglen og bruge det.
Så det er normalt på den samme tast som backslash lige over Enter.
>> Den endelige logiske operator er IKKE.
Og IKKE er ret ligetil.
Det inverterer værdien af ​​sin operand.
Hvis x er sandt, så ikke x er falsk.
Hvis x er falsk, så ikke x er sandt.
Nogle gange vil du høre dette symbol udtales som bang eller udråbstegn
eller ej.
Det er temmelig meget alle de samme ting.
Hvis du hører, at talt og du ikke er sikker på, hvad det betyder,
det er bare udråbstegn punkt, men nogle gange er det
kaldes et par forskellige ting.
Okay, så tager pleje af logiske operatorer.
Så lad os tale om relationelle operatører.
Igen, hvis du er fortrolig med dette aritmetiske tilbage i folkeskolen,
du er sikkert bekendt med, hvordan disse arbejde, der allerede.
Disse opfører sig præcis som du ville forvente.
Så mindre end det er sandt, i dette eksempel hvis x er mindre end y.
Så hvis x er 4, og y er 6, x er mindre end y.
Det er sandt.
Mindre end eller lig med fungerer temmelig samme måde.
Hvis x er 4, og y er 4, så x er mindre end eller lig med y.
Bedre end. x er større end y.
Og større end eller lig med x er større end eller lig med y.
Hvis det er sandt, så vil du passere dette udtryk,
og du vil gå ned denne vej på vejen.
Hvis du har en hvis x er større end y, og x er i virkeligheden er større end y,
du vil gøre, hvad er underlagt denne betingelse.
>> Bemærk, at vi ikke har en enkelt tegn for mindre end
eller lig med, som du kan være kender fra matematiske lærebøger.
Så har vi den mindre end symbolet, efterfulgt af et lighedstegn.
Det er, hvordan vi repræsenterer mindre end eller lig med.
Og på samme måde, gør vi det større end eller lig med.
>> De sidste to relationelle operatører, der er vigtige
tester for lighed og ulighed.
Så hvis x er lig lig y, er sandt hvis x og y værdi er den samme.
Hvis x er 10, og y er 10, så x er lig lig y er sandt.
Hvis x er 10 og y er 11, X lig er lig y er ikke sandt.
Vi kan også teste for ulighed ved hjælp af udråbstegn eller bang eller ej,
igen.
Hvis x ikke er lig med y, hvis det er testen, vi bruger her,
vi ville være godt at gå.
Så hvis x ikke er lig med y, vi vil gå den vej.
>> Være virkelig forsigtig her.
Det er en virkelig fælles mistake-- og en jeg helt sikkert gjort en hel del, når
Jeg fik started-- at uheld fejl
tildelingsoperatoren, enlige ligemænd, til sammenligning ligestilling operatør,
dobbelt ligemænd.
Det vil føre til nogle underlige adfærd i din kode,
og som regel compileren vil advare dig om det, når du forsøger
og kompilere din kode, men nogle gange du kan være i stand til at snige den med.
Det er ikke nødvendigvis en god ting at du snige det ved, selv om.
Bare så hvis du laver en ulighed test,
hvis du kontrollere, om to forskellige variable har samme værdi
inde i dem, så sørg for at bruge lig ligemænd og ikke enlige ligemænd.
Og på den måde dit program vil har den adfærd, du ønsker.
Jeg er Doug Lloyd og dette er CS50.