>> [Muziek]
>> DOUG LLOYD: Hoi, dus laten we praten over operatoren in C.
Dus, hebben we al een gezien, in feite, gelijk aan de toewijzingsoperator.
Het stelt ons in staat om gewoon te zetten een waarde in een variabele.
Dat is de opdracht operator, één isgelijkteken.
Om te manipuleren en te werken waarden en variabelen in C,
we hebben een aantal exploitanten tot onze beschikking die we kunnen gebruiken.
Laten we eens een kijkje nemen op enkele voorkomende
te beginnen met rekenkundige operatoren.
Zoals je zou verwachten, we kunnen doen vrij eenvoudig wiskundige bewerkingen in C.
We kunnen optellen, aftrekken, vermenigvuldigen en kloof nummers met behulp van plus, min, ster,
en slash, respectievelijk.
Hier is een paar lijnen van code waarin we dat doen.
Dus, we hebben int x gelijk is aan y plus 1.
Laten we aannemen dat er ergens boven deze lijn van code
we hadden gezegd int y is gelijk aan 10.
Wat is de waarde van x nadat ik Deze eerste regel van de code uit te voeren?
Zeg je 11?
Je zou gelijk.
Waarom is dat?
Nou, y was 10.
Sommige Ik zeg int x gelijk aan 10 plus 1.
10 plus 1 is 11.
Dus de waarde 11 krijgt opgeslagen in de variabele x.
Niet slecht, toch?
>> Hoe zit dit volgende regel code? x is gelijk aan x maal 5.
Nou, voordat we geëxecuteerd deze lijn van code, x 11 was.
Dus, wat is de waarde van x na deze regel code?
Neem een ​​tweede.
Dus, x gelijk aan x maal 5.
x 11 was.
Dus, x gelijk is aan 11 maal 5.
Of 55.
Dus als je zei 55, zou je gelijk hebben.
>> Nu, kan het een beetje verwarrend, maar met de manier waarop deze opdracht werkt in C
de waarde rechts wordt toegekend aan de waarde links.
Dus, eerst evalueren we x keer 5.
Dus, 11 maal 5 is 55.
En dan slaan we die waarde in x.
De 11 dat er sprake was voordat wordt nu overschreven.
Dus x de waarde is nu 55.
Hopelijk dat is vrij eenvoudig.
>> Er is nog een operator die je hebt waarschijnlijk niet noodzakelijkerwijs gehoord
noemde dit, maar je hebt zeker gewerkt met in het verleden
als je nog je dagen lang divisie weg terug in de lagere school.
Het heet de modulus operator.
Wat modulus doet is het geeft u de rest
als je verdelen twee nummers samen.
Dus, als ik zeg 13 gedeeld door 4, wat is de rest?
En die waarde zou worden berekend de modulus operator.
>> Dus, ik heb een regel code hier, int m gelijk is aan 13 mod 4.
En ik zeg hier in een reactie waarde dat m nu 1.
Waarom moet ik dat zeggen?
Nou, doe de staartdeling in uw hoofd, als je geduld met mij voor een tweede.
Dus, ik heb 4 gedeeld door 13.
4 gaat in 13 driemaal met een restant van 1.
Dus, in principe, alle modulus operator doet
is dat je als je vertelt kloof, krijg je de rest.
Je zou kunnen denken dat is eigenlijk niet vreselijk nuttig ding,
maar je zou verbaasd zijn, eigenlijk, door hoe vaak dat modulus
operator kan van pas komen.
>> Er zijn een paar van de problemen we zullen CS50 die zich bezighouden met het doen.
Het is ook goed voor het doen dingen als willekeurig getal.
Dus, bijvoorbeeld als je ooit hebt gehoord van een random number generator,
dat gaat om u een aantal van 0 tot wat enorm aantal.
Maar misschien heb je pas echt moet een getal van 0 tot 20.
Als u de modulus operator op die gigantische nummer dat
wordt gegenereerd door de random number generator,
je gaat nemen wat grote waarde is, delen door 20,
en krijgt de rest.
De rest kan alleen zijn een waarde 0-19.
Dus, modulus operator gebruikt u om dit enorme aantal te nemen
en Whittle het neer in iets iets zinvoller.
Ik ben er vrij zeker van dat u zult kunnen deze beide gebruiken
op enig moment in de toekomst in de CS50.
>> Dus, C geeft ons ook een manier een rekenkundige passen
operator een enkele variabele in iets meer steno manier.
Dus, in de vorige dia we zagen x gelijk is aan x maal 5.
Dat werkte.
x tijden 5 vervolgens wordt opgeslagen terug in x.
Er is een kortere manier om het te doen, denken, en het is de syntax x maal gelijk aan 5.
Het is precies dezelfde zaak als zeggende x is gelijk aan x maal 5.
Het is gewoon een beetje kortere manier om het te doen.
En als je ziet wat verdeelsleutel of u
Zie enkele voorbeelden van code die doet dit soort dingen,
gewoon vertrouwd zijn met wat de syntax betekent.
Je zeker niet hebben om het te gebruiken, maar als je dat doet,
het zou uw code te maken er een beetje gelikter.
En weet dat je ook een van kunnen gebruiken de verschillende operatoren hebben we al
gezien vóór plaats keren.
Je zou kunnen zeggen x plus evenaart 5, minus gelijk aan 5, tijden, verdeel en mod.
Al deze werkzaamheden.
>> Er is ook iets dat is zo gewoon in C
dat we hebben besloten om verfijnen dat zelfs nog verder.
Het verhogen van een variabele door 1 of verlagen van een variabele door 1
is een dergelijk gemeenschappelijk thing-- vooral als we praten over loops een beetje later
on-- dat we in plaats van hebben besloten iets te zeggen als x plus gelijk is aan 1,
of x gelijk aan x plus 1, ook hebben we korte overhandigde die aan x plus plus.
Dus, x gelijk aan x plus 1, x plus gelijk is aan 1, en x plus plus allemaal hetzelfde doen.
Ze zijn allemaal increment x per 1.
Dat incrementeren degressie van 1
is zo gewoon dat we plus plus en min min
die ons toelaten om stenografie dat verder.
>> Dus, laten we schakelen tandwielen voor de tweede en praten over Booleaanse uitdrukkingen.
Alle die ook voor soort vallen in de algemene categorie marktdeelnemers.
Maar Booleaanse uitdrukkingen, in tegenstelling tot de rekenkundige operatoren,
worden gebruikt voor het vergelijken van waarden.
Dus nogmaals, alle Booleaanse expressies in C evalueren in één van twee mogelijke waarden,
herinneren.
Waar of niet waar.
Dat is de enige twee waarden die Boolean variabele kan op zich te nemen.
We kunnen de resultaten gebruiken van een Booleaanse expressie
in veel opzichten programmering.
In feite, zult u dit te doen heel veel.
>> Zo kunnen we besluiten, goed, als enige voorwaarde waar is,
misschien zal ik dit nemen vertakken naar beneden mijn code.
Een voorwaardelijk, bij wijze van spreken.
We zullen leren over die binnenkort ook.
Of misschien, mits dit waar is, ik wil
te blijven doen over en over en voorbij.
Een lus.
In beide gevallen weet dat we gebruiken een Booleaanse expressie, een waar of onwaar,
om te beslissen of niet een bepaald pad.
Soms, als we werken met Booleaanse expressies,
zullen we gebruik maken van variabelen van het type Bool.
Je zou hebben verklaard een Bool getypt variabele
en je zult gebruiken in uw Boolean expressie.
Maar je hoeft niet altijd hoeft te doen.
Zo blijkt, in C, elke niet-0 waarde hetzelfde als zeggen waar.
Als u had verklaard variabele van het type Boolean,
en wees het de waarde waar is, dat is gelijk waarbij een integer
en toe te wijzen aan de waarde 1, 2, 3, of eigenlijk geen waarde
ook andere dan 0.
Want in C, elke niet-0 is true.
0, daarentegen, is onjuist.
Dit zou kunnen komen in pas later te weten,
maar gewoon iets om in gedachten te houden.
We hebben niet altijd te gebruiken Boolean variabelen als we
werken met Booleaanse uitdrukkingen.
>> Er zijn twee hoofdtypen van Boole uitdrukkingen die we zullen werken.
Logische operatoren en relationele operatoren.
De taal is er niet erg belangrijk.
Het is eigenlijk gewoon hoe ik ze te groeperen.
En je zult zeker, denk ik, snel beseffen wat een relationele operator is,
basis van wat ze zijn als we praten over hen in een tweede.
Maar maak je geen zorgen over het per se het onthouden van de term logische operator
of relationele operator.
Ik ben gewoon te gebruiken om de groep ze op een logische manier.
>> Dus, laten we een kijkje nemen op de drie logische operatoren
dat we zullen zien een heel bit in de programmering in CS50
en in de programmering meer in het algemeen.
Logische AND is waar, wanneer en alleen als beide operanden waar zijn.
Anders false.
Waar komt dat?
Dus, laten we zeggen dat ik bij een punt in mijn code waar ik
twee variabelen, x en y.
En ik wil om te beslissen of om iets te doen in mijn code
op basis van dat waar x en y klopt.
Ik wil alleen maar om het te doen als beiden zijn echte,
anders had ik wil niet naar beneden te gaan dat pad, want het gaat niet om mij te helpen.
Wat ik wel kan zeggen is als x & & y.
Dat zal een logische Boolean expressie vergelijken x en y
en het nemen van een bepaald pad op basis van wat hun waarden zijn.
Dus, als x en y waar geldt op basis van deze waarheid tafel hier,
alleen dan zullen we naar beneden dat pad.
Als x & & y.
Het is alleen de true-- en is slechts waar als waar x en y klopt.
Als een van beide is vals, zoals we zien de waarheid tafel,
dan zijn zowel x en y niet waar.
En dus, x & & y is vals.
>> Logische OR is waar dan en slechts indien ten minste één operand klopt.
Anders false.
Zo logisch en vereiste zowel x en y om waar te zijn.
Logische OR vereist x om waar te zijn of y waar is of zowel x en y waar is.
Dus nogmaals, we soort van vinden onszelf in een situatie
waar we gaan onze code, en bereikten we een splitsing in de weg.
En we willen naar beneden te gaan een bepaald pad als x true
of y is waar, maar niet noodzakelijkerwijs als beide waar zijn.
Maar mogelijk als beide waar zijn.
Als x en y waar is waar gaan we naar beneden dat pad.
x klopt.
Een daarvan is waar, gelijk?
Als x is waar en y is waar.
Als x waar en onwaar y, een daarvan is nog steeds waar.
Dus, x of y is nog steeds waar.
Als x onwaar en y is waar, een van hen is nog steeds zo, toch?
y geldt in dit geval.
Dus, het is waar dat x of y is waar.
Alleen als x en y onwaar onwaar gaan we niet naar beneden dat pad,
omdat noch x of y is waar.
Nu, als u op zoek bent op het scherm nu
en zich afvragen wat dat symbool is voor logische OR,
het heet de verticale balk.
En als u op zoek op uw toetsenbord voor een minuut, zoals ik nu doe,
het is meestal net boven de Enter-toets, op de meeste toetsenborden,
op dezelfde toets als de backslash.
Het is ook meestal gelijk naast de vierkante haken.
Dus, is het misschien een sleutel die u hebben niet veel in het verleden getypt.
Maar, als je ooit doen logische vergelijkingen
als we een doen veel in de loop, is het
zal nuttig zijn vinden dat de belangrijkste en gebruiken.
Dus, het is meestal op dezelfde toets zoals backslash net boven Enter.
>> De laatste logische operator NOT.
En NIET is vrij eenvoudig.
Het keert de waarde van de operand.
Als x waar is, dan niet x is vals.
Als x is vals, dan is x niet waar is.
Soms zult u dit symbool horen uitgesproken als klap of uitroepteken
of niet.
Het is vrijwel allemaal hetzelfde.
In het geval hoor je dat gesproken en je bent niet zeker wat dat betekent,
het is gewoon de uitroep punt, maar soms is het
riep een paar verschillende dingen.
Oké, dus dat duurt zorg van de logische operatoren.
Dus, laten we praten over relationele operatoren.
Nogmaals, als je vertrouwd zijn met deze bent rekenkundige terug op de lagere school,
je bent waarschijnlijk bekend hoe deze werken reeds.
Deze gedragen zich precies zoals je zou verwachten.
Dus minder dan het is waar, in dit Bijvoorbeeld, als x kleiner dan y.
Dus, als x 4 en y 6, x kleiner dan y.
Dat is waar.
Minder dan of gelijk aan werkt vrij vergelijkbare wijze.
Als x 4 en y is 4, dan x is kleiner dan of gelijk aan y.
Groter dan. x is groter dan y.
En groter dan of gelijk aan x groter dan of gelijk aan y.
Als het waar is, dan zul je passeren die uitdrukking,
en je zult gaan dat pad op de weg.
Als u een als x groter is dan y, en x is in feite groter dan y,
je zult doen wat is onderworpen aan die voorwaarde.
>> Merk op dat we geen hebben één karakter voor minder dan
of gelijk aan, zoals u misschien wel kent van wiskunde leerboeken.
Dus, we hebben het minder dan symbool, gevolgd door een gelijk-teken.
Dat is hoe wij vertegenwoordigen minder dan of gelijk aan.
En zo ook, doen we dat doen gedurende meer dan of gelijk aan.
>> De laatste twee relationele exploitanten die belangrijk zijn
testen voor gelijkheid en ongelijkheid.
Dus, als x gelijk is aan y gelijk is, geldt Als x en y de waarde hetzelfde.
Als x 10, en y is 10, dan x gelijk is gelijk aan y is waar.
Als x en y 10 is 11, x gelijk aan evenaart y is niet waar.
We kunnen ook testen voor het gebruik van de ongelijkheid uitroepteken of bang is of niet,
weer.
Als x niet gelijk is aan y, indien dat is de test dat we hier gebruiken,
we goed om te gaan zou zijn.
Dus, als x niet gelijk y, we gaan dat pad.
>> Wees hier heel voorzichtig.
Het is echt een gemeenschappelijke mistake-- en die ik zeker dat heel veel bij
Ik kreeg started-- om per ongeluk fout
de opdracht operator, enkel gelijken, voor de vergelijking gelijkheid exploitant,
dubbele gelijken.
Het zal leiden tot een aantal rare gedrag in uw code,
en meestal de compiler waarschuwen over wanneer u probeert
en compileren uw code, maar soms je zou in staat zijn om het te sluipen door.
Het is niet noodzakelijk een goede zaak dat je het stiekem door, dat wel.
Net zo als je aan het doen bent een ongelijkheid test,
als je het te controleren of twee verschillende variabelen dezelfde waarde
binnenkant van hen, zorg ervoor om te gebruiken evenaart gelijken, en niet enkel gelijken.
En op die manier je programma zal hebben het gedrag dat u van plan bent.
Ik ben Doug Lloyd en dit is CS50.