[MUSIK SPELA] DOUG Lloyd: Hej, så låt oss tala om operatörer i C. Så vi har redan sett en, i själva verket, lika tilldelningsoperatorn. Det ger oss möjlighet att bara sätta ett värde i en variabel. Det är uppdraget operatör, enda likhetstecknet. För att manipulera och arbete med värden och variabler i C, Vi har ett antal operatörer till vårt förfogande som vi kan använda. Låt oss ta en titt på några av de vanligaste börjar med aritmetiska operatorer. Som du kanske tror, ​​kan vi göra Ganska grundläggande matematiska operationer i C. Vi kan addera, subtrahera, multiplicera, och klyftan nummer med plus, minus, stjärna, och snedstreck, respektive. Här är ett par rader kod som vi gör det. Så har vi int x lika y plus 1. Låt oss anta att någonstans upp ovanför den här kodraden Vi hade sagt int y är lika med 10. Vad är värdet på x efter att jag utföra denna första kodraden? Sa du 11? Du skulle rätt. Varför? Tja, var y 10. Några jag säger int x är lika med 10 plus 1. 10 plus 1 är 11. Så värdet 11 får lagras i variabeln x. Inte alltför illa, eller hur? Vad sägs om detta nästa rad av kod? x är lika med x gånger 5. Tja, innan vi avrättade här kodraden, x var 11. Så, vad är värdet av x efter den här kodraden? Ta en andra. Så, x är lika med x gånger 5. x var 11. Så, x är lika med 11 gånger 5. Eller 55. Så om du sa 55, skulle du vara rätt. Nu kan det vara lite förvirrande, men med det sätt som uppdraget fungerar i C är värdet på höger sida blir tilldelats värdet till vänster. Så först utvärderar vi x gånger 5. Så, 11 gånger 5 är 55. Och då kommer vi att lagra värdet i x. 11 som var där innan nu över. Så x värde är nu 55. Förhoppningsvis är ganska okomplicerad. Det finns en annan operatör som du har förmodligen inte nödvändigtvis hört kallade detta, men du har verkligen arbetat med tidigare Om du kommer ihåg dina dagar långa division långt tillbaka i lönegrad skolan. Det kallas modulen operatören. Vad modulen gör det ger dig resten när du dela två siffror tillsammans. Så, om jag säger 13 dividerat med 4, vad är resten? Och detta värde beräknas av modulen operatören. Så jag har en kodrad här, int m är lika med 13 mod 4. Och jag säger här i en kommentar att m värde är nu 1. Varför säger jag det? Tja, gör lång division i din huvud, om du bär med mig för en sekund. Så, jag har 4 delat med 13. 4 går in i 13 tre gånger med en återstod av en. Så i princip, alla modul operatör gör är det talar om för dig när du klyftan, får du resten. Du kanske tror att det är faktiskt inte en fruktansvärt bra sak, men du skulle bli förvånad, faktiskt, hur ofta att modul Operatören kan komma till hands. Det finns ett par problem vi ska göra CS50 som behandlar det. Det är också bra för att göra saker som slumptal. Så, till exempel om du har någonsin hört talas om en slumptalsgenerator, det kommer att ge dig ett antal från 0 till några stora antal. Men kanske du bara verkligen behöver ett nummer 0-20. Om du använder modulen operatören på det gigantiska nummer som blir genereras av slumpgenerator, du kommer att vidta stort värde som det är, dela det med 20, och få resten. Resten kan bara vara ett värde 0-19. Så använder du modul operatör ta stort antal och skära upp det i något lite mer meningsfull. Jag är ganska säker på att du kommer att bli kunna använda båda dessa någon gång i framtiden CS50. Så, C ger oss också ett sätt att tillämpa en aritmetisk operatören att en enda variabel i en lite mer stenografi sätt. Så, i föregående bild, vi såg x är lika med x gånger 5. Det fungerade. x gånger 5 sedan får lagras tillbaka i x. Det finns en kortare väg att göra det, tanke, och det är det syntax x gånger är lika med 5. Det är exakt samma sak som säger x är lika med x gånger 5. Det är bara en aning kortare väg att göra det. Och när du ser några distributionskoden eller så se några exempelkod som gör saker som detta, bara känna till vad syntaxen organet. Du verkligen inte har att använda det, men om du gör, det kan göra din kod ser lite slicker. Och vet att du även kan använda någon av de olika aktörer som vi har redan sett förut i stället gånger. Man kan säga x plus lika 5, minus lika 5, tider, dela och mod. Alla dessa arbeten. Det finns också något som är så vanligt i C att vi har beslutat att förfina att ytterligare. Ökning en variabel med 1 eller minska en variabel med 1 är en sådan gemensam thing-- särskilt när vi talar om loopar lite senare on-- att vi har bestämt i stället för säger något i stil med x plus lika med 1, eller x är lika med x plus ett, vi har till och med kort överlämnas det till x plus plus. Så, x är lika med x plus 1, x plus lika med 1, och x plus plus alla gör samma sak. Alla ökning x med 1. Men att uppstegning och nedräkning med 1 är så vanligt att vi har plus plus och minus minus som tillåter oss att bara en förkortning att ytterligare. Så, låt oss byta växlar andra och prata om booleska uttryck. Allt som är också typ av falla i den totala kategori av aktörer. Men booleska uttryck, Till skillnad från aritmetiska operatörer, används för att jämföra värden. Så, återigen, alla booleska uttryck i C utvärderas till ett av två möjliga värden, minns. Sant eller falskt. Det är de enda två värden som Boolesk variabel kan ta på. Vi kan använda resultaten av ett booleskt uttryck i en mängd olika sätt i programmering. I själva verket kommer du att gör detta en hel del. Till exempel kan vi besluta Tja, om något villkor är sant, kanske jag tar detta gren ner min kod. En villkorad, så att säga. Vi kommer att lära om dem snart också. Eller kanske, så länge detta är sant, jag vill fortsätta att göra detta om och om och om igen. En slinga. I båda fallen vet att vi använder ett booleskt uttryck, en sant eller falskt, att besluta om eller inte att ta en viss väg. Ibland när vi jobbar med booleska uttryck, Vi kommer att använda variabler av typen Bool. Du kanske har förklarat en Bool skrivit variabel, och du kommer att använda i din Boolean uttryck. Men du behöver inte alltid att göra. Som det visar sig, i C, varje icke-0 värde är detsamma som att säga sant. Om du hade förklarat en variabel av typen Boolean, och tilldelas det värdet true, som är samma som att förklara ett heltal och tilldela det värdet 1, 2, 3, eller egentligen något värde helst annat än 0. För i C, är alla icke-0 värdet true. 0, å andra sidan, är falsk. Detta kan komma i praktiskt senare veta, men bara något att ha i åtanke. Vi behöver inte alltid använda Boolean typ variabler när vi arbetar med booleska uttryck. Det finns två huvudtyper av Boolean uttryck som vi kommer att arbeta med. Logiska operatorer och relationsoperatorer. Språket finns inte särskilt viktigt. Det är egentligen bara hur jag gruppera dem. Och du kommer säkert, tror jag, snabbt inse vad en relationsoperator är, baserat på vad de är när vi prata om dem på en sekund. Men oroa dig inte om nödvändigtvis memorera termen logiska operatorn eller relationsoperator. Jag bara använda det för att gruppera dem på ett logiskt sätt. Så, låt oss ta en titt på de tre logiska operatorer att vi får se en ganska bit i programmering i CS50 och programmering i allmänhet. Logiskt AND är sant om och endast om båda operander är sanna. Annars falskt. Var betyder det? Så, låt oss säga att jag är på en pekar i min kod där jag har två variabler, x och y. Och jag vill att besluta om att göra något i min kod baserat på om x är sant och y är sant. Jag vill bara göra det om båda av dem är sant, annars skulle jag inte vill gå ner att väg eftersom det inte kommer att hjälpa mig. Vad jag kan säga är att om x och y och. Det kommer att vara en logisk Boolean uttryck jämföra x- och y och ta en viss väg baserat på vad deras värderingar är. Så, om x är sant och y är sant grundar sig på denna sanning tabell här, Först då kommer vi att gå den vägen. Om x, & & y. Det är bara true--, och är endast sant om x är sant och y är sant. Om endera är falsk, som vi ser sanningen tabellen, då både x- och y är inte sant. Och så är x & & y falskt. Logisk ELLER är sant om och endast om åtminstone en operand är sant. Annars falskt. Så logiskt OCH krävs både x- och y för att vara sant. Logisk eller kräver x för att vara sant eller y att vara sant eller både x och y för att vara sant. Så, återigen, vi slags hitta oss i en situation där vi kommer att vår kod, och vi nådde en vägskäl. Och vi vill gå ner en viss bana om x är sant eller y är sant, men inte nödvändigtvis om båda är sanna. Men möjligen om båda är sanna. Så om x är sant och y är sant, vi kommer att gå den vägen. x är sant. En av dem är sant, eller hur? Om x är sant och y är sant. Om x är sant, och y är falsk, en av dem är fortfarande sant. Så, x eller y är fortfarande sant. Om x är falskt, och y är sant, en av dem är fortfarande sant, eller hur? y är sant, i det här fallet. Så, det är sant att x eller y är sant. Endast om x är falskt och y är falskt vi inte gå den vägen, eftersom varken x eller y är sant. Nu, om du letar efter på skärmen just nu och undrar vad det symbol är för logiskt OR, heter det lodräta strecket. Och om du tittar på ditt tangentbord för en minut, vilket jag gör nu, det är oftast precis ovanför Enter, på de flesta tangentbord, på samma knapp som backslash. Det är också oftast rätt bredvid hakparenteserna. Så kan det vara en nyckel som du har inte skrivit så mycket i det förflutna. Men om du någonsin gör logiska jämförelser, som vi kommer att göra en mycket i kursen, är det kommer att vara till nytta för upptäcker att nyckeln och använda den. Så, är det oftast på samma knapp som backslash precis ovanför Enter. Den slutliga logisk operator är inte. Och inte är ganska enkelt. Det inverterar värdet av dess operand. Om x är sant, då inte x är falskt. Om x är falskt, då inte x är sant. Ibland hör du denna symbol uttalas som bang eller utropstecken eller inte. Det är ganska mycket alla samma sak. I fall du hör det talas och du är osäker på vad det betyder, det är bara utrops punkt, men ibland är det kallas ett par olika saker. Okej, så det tar hand om logiska operatorer. Så, låt oss tala om relationsoperatorer. Återigen, om du är bekant med detta aritmetik tillbaka i skolan, du är förmodligen bekant hur dessa fungerar redan. Dessa beter sig precis som du förväntar dig. Så mindre än det är sant, i detta exempel, om x är mindre än y. Så, om x är 4 och y är 6, x är mindre än y. Det är sant. Mindre än eller lika med fungerar ganska liknande sätt. Om x är 4, och y är 4, då x är mindre än eller lika med y. Större än. x är större än y. Och större än eller lika med x är större än eller lika med y. Om det är sant, då du kommer passera det uttrycket, och du kommer att gå ner den vägen på vägen. Om du har en om x är större än y, och x är, i själva verket är större än y, du göra allt som är omfattas av detta tillstånd. Lägg märke till att vi inte har en enstaka tecken för mindre än eller lika med, som ni kanske vara känner igen från matematiska läroböcker. Så har vi mindre än symbol, följt av ett likhetstecken. Det är hur vi representerar mindre än eller lika med. Och på samma sätt, gör vi det för större än eller lika med. De två sista relations operatörer som är viktiga testar för jämställdhet och ojämlikhet. Så, om x är lika med lika y är sant om x och y: s värde är detsamma. Om x är 10 och y är 10, då x är lika med lika y är sant. Om x är 10 och y är 11, x lika lika y är inte sant. Vi kan också testa för ojämlikhet genom att använda utropstecken eller smäll eller inte, igen. Om x inte är lika med y, om det är testet vi använder här, vi skulle vara bra att gå. Så, om x inte är lika med y, vi kommer att gå den vägen. Var riktigt försiktig här. Det är en riktigt gemensam mistake-- och jag verkligen gjort en hel del när Jag var att få started-- av misstag förväxla tilldelningsoperatorn, ensamstående jämlikar, för jämförelsejämställdhets operatör, dubbel jämlikar. Det kommer att leda till några konstiga beteende i din kod, och oftast kompilatorn kommer varna dig om det när du försöker och kompilera din kod, men ibland du kanske kunna smyga genom. Det är inte nödvändigtvis en bra sak att du smyga förbi, men. Bara så om du gör en olikhet tester, om du kontrollera om två olika variabler har samma värde inne i dem, se till att använda lika jämlikar, och inte enskilda jämlikar. Och på så sätt ditt program kommer har det beteende du tänker. Jag är Doug Lloyd och detta är CS50.