Ladda ner presentationen
Presentation laddar. Vänta.
1
Operatorer
2
Operand(er)
3
Operator och operand 3 + 2
4
Aritmetiska operatorer i C
+ addition - subtraktion * multiplikation / division % modulo-operatorn , resten vid positiv heltals-division - negation, unär operator
5
Aritmetiska operatorer i C exempel
negation - 2
6
Aritmetiska operatorer i C exempel
negation, addition
7
Aritmetiska operatorer i C exempel
negation, addition, division / 2
8
Aritmetiska operatorer i C exempel
negation, addition, division, multiplikation / 2 * 3
9
Aritmetiska operatorer i C exempel
negation, addition, division, multiplikation, subtraktion / 2 * 3 - 1
10
Aritmetiska operatorer i C exempel
negation, addition, division, multiplikation, subtraktion / 2 * 3 - 1 detta är ett uttryck
11
Aritmetiska operatorer i C exempel
negation, addition, division, multiplikation, subtraktion / 2 * 3 - 1 detta är ett uttryck uttryck i C har ett värde av en viss typ, i detta fall 3 ( int )
12
Aritmetiska operatorer i C exempel
negation, addition, division, multiplikation, subtraktion / 2 * 3 - 1 detta är ett uttryck uttryck i C har ett värde av en viss typ, i detta fall 3 ( int ) #include <stdio.h> int main( void ) { printf( "Uttrycket -2+4/2*3-1 = %d",-2+4/2*3-1 ); return 0; }
13
Provkörning
14
Aritmetiska operatorer i C exempel
negation, addition, division, multiplikation, subtraktion / 2 * 3 - 1 operatorernas prioritet är den vanliga matematiska
15
Aritmetiska operatorer i C exempel
vill man ändra prioritetsordning så gör man det med parenteser negation, addition, division, multiplikation, subtraktion ( ) / 2 * 3 - 1 operatorernas prioritet är den vanliga matematiska
16
Aritmetiska operatorer i C exempel
vill man ändra prioritetsordning så gör man det med parenteser negation, addition, division, multiplikation, subtraktion ( ) / 2 * 3 - 1 operatorernas prioritet är den vanliga matematiska #include <stdio.h> int main( void ) { printf( "Uttrycket (-2+4)/2*3-1 = %d",(-2+4)/2*3-1 ); return 0; } OBS! Vid multiplikation måste alltid multiplikationstecknet sättas ut: 5( x+3) fungerar inte! 5*(x+3) fungerar!
17
Provkörning
18
Aritmetiska operatorer i C exempel
ett varningens ord om division …
19
Aritmetiska operatorer i C exempel
vad tror du 9/2 är?.....
20
Aritmetiska operatorer i C exempel
vad tror du 9/2 är?.....
21
Aritmetiska operatorer i C exempel
hmm, ja det är väl 4,5? vad tror du 9/2 är?.....
22
Aritmetiska operatorer i C exempel
vad tror DU ?
23
Aritmetiska operatorer i C exempel
prova ! #include <stdio.h> int main( void ) { printf( "Uttrycket 9/2 = %f", (double)(9/2) ); return 0; }
24
Aritmetiska operatorer i C exempel
division av två heltal (int) i C ger ett heltal som svar. Om man vill ha ett flyttal (double ) som svar så ordnas detta genom att göra antingen divisor eller dividend till en double Sätt till en decimalpunkt, här! #include <stdio.h> int main( void ) { printf( "Uttrycket 9/2 = %f", (double)(9/2) ); return 0; }
25
Aritmetiska operatorer i C exempel
så ja! Testa! #include <stdio.h> int main( void ) { printf( "Uttrycket 9/2. = %f", (double)(9/2.) ); return 0; }
26
Aritmetiska operatorer i C exempel
hmm, men vad gör den där modulo-grejen? %
27
Aritmetiska operatorer i C exempel
den ger resten vid heltalsdivision, kika på nästa sida! hmm, men vad gör den där modulo-grejen? %
28
Aritmetiska operatorer i C exempel
multiplikation t ex 7*3 är ju detsamma som att addera 7 3 ggr (7+7+7). På motsvarande sätt betyder 7/3 ”hur många ggr går det att subtrahera 3 från 7” (7-3-3). Det går två hela ggr och så får man resten 1 Denna rest får man fram med %. Provkör exemplet! OBS! dubbla % ! #include <stdio.h> int main( void ) { printf( "Uttrycket 7%%3 = %d", 7%3 ); return 0; }
29
Minuter och sekunder Hur många minuter är 9631 sekunder?
int sek = 9631; printf("%d sekunder är %d minuter och %d sekunder\n", sek, sek/60, sek%60 );
30
Aritmetiska operatorer i C
undrar hur man gör med de där?
31
Aritmetiska funktioner i C
då räcker det inte med operatorer utan man får plocka fram det tunga artilleriet nämligen funktioner !
32
Aritmetiska funktioner i C
några funktioner ur math.h double acos (double ); double asin (double ); double atan (double ); double ceil (double ); double cos (double ); double cosh (double ); double exp (double ); double fabs (double ); double floor (double ); double log (double ); double log10 (double ); double pow (double , double ); double sin (double ); double sinh (double ); double sqrt (double ); double tan (double ); double tanh (double );
33
Aritmetiska funktioner i C exempel
#include <stdio.h> #include <math.h> int main( void ) { printf( "Uttrycket pow(2,16)-1 = %0.0f", pow(2,16)-1 ); return 0; }
34
Aritmetiska funktioner i C
några funktioner ur stdlib.h int abs(int ); long labs(long );
35
”Öka eller minska med ett” -operatorn
36
”Öka eller minska med ett” -operatorn
I C ökas (eng.increment) resp minskas (eng. decrement) en heltalsvariabel med värdet 1 på följande sätt, #include <stdio.h> int main( void ) { int i=0, j=5; printf( "Variabelvarden: i = %d \n", i ); printf( "Variabelvarden: j = %d \n", j ); printf( "Uttrycket \t ++i = %d och j++ = %d \n", ++i, j++ ); return 0; } operatorn ++ som prefix-operator som innebär att i:s värde ökas med ett innan uttrycket beräknas ++ som postfix-operator, j:s värde ökas med ett efter det att uttrycket beräknats
37
Provkörning #include <stdio.h> int main( void ) { int i=0, j=5;
printf( "Variabelvarden: i = %d \n", i ); printf( "Variabelvarden: j = %d \n", j ); printf( "Uttrycket \t ++i = %d och j++ = %d \n", ++i, j++ ); return 0; }
38
”Öka eller minska med ett” -operatorn
På motsvarande sätt fungerar ”minska med ett”-operatorn #include <stdio.h> int main( void ) { int i=0, j=5; printf( "Variabelvarden: i = %d \n", i ); printf( "Variabelvarden: j = %d \n", j ); printf( "Uttrycket \t --i * j-- = %d \n", --i * j--); return 0; } operatorn -- som prefix-operator som innebär att i:s värde minskas med ett innan uttrycket beräknas -- som postfix-operator, j:s värde minskas med ett efter det att uttrycket beräknats
39
Provkörning #include <stdio.h> int main( void ) { int i=0, j=5;
printf( "Variabelvarden: i = %d \n", i ); printf( "Variabelvarden: j = %d \n", j ); printf( "Uttrycket \t --i * j-- = %d \n", --i * j--); return 0; }
40
Jämförelseoperatorer
< ”mindre än” - operatorn > ”större än” - operatorn <= ”mindre än eller lika med” - operatorn >= ”större än eller lika med” - operatorn == ” lika med” - operatorn ( OBS! dubbelt = ) != ” skilt från” - operatorn
41
Jämförelseoperatorer exempel
eftersom du gör så här måste det betyda att jämförelseuttrycken har ett heltalsvärde!? #include <stdio.h> int main( void ) { int i=0, j=5; printf( "Variabel i = %d och j = %d \n\n", i, j ); printf( "Uttrycket: \t i == j far vardet %d \n", i == j); printf( "och \t\t i != j far vardet %d \n", i!=j ); return 0; }
42
Jämförelseoperatorer exempel
detta betyder att ett falskt villkorsuttryck har värdet 0 , i detta fall har ( i == j ) värdet 0 och ett sant värdet 1, i detta fall har ( i!=j ) värdet 1
43
Tilldelningsoperatorer de vanligaste
enkel tilldelning = x = y *3 sammansatt tilldelning, två blir en += x += 3 är detsamma som x = x + 3 -= x -= 3 är detsamma som x = x - 3 *= x *= 3 är detsamma som x = x * 3 /= x /= 3 är detsamma som x = x / 3 %= x %= 3 är detsamma som x = x % 3
44
Tilldelningsoperatorer de vanligaste
enkel tilldelning = x = y *3 sammansatt tilldelning, två blir en += x += 3 är detsamma som x = x + 3 -= x -= 3 är detsamma som x = x - 3 *= x *= 3 är detsamma som x = x * 3 /= x /= 3 är detsamma som x = x / 3 %= x %= 3 är detsamma som x = x % 3 tilldelning sker från höger till vänster , x ¬ 3
45
Tilldelningsoperatorer de vanligaste
#include <stdio.h> int main( void ) { int i=0, j=5; printf( "Variabel i = %d och j = %d \n\n", i, j ); printf( "Uttrycket: \t i = j = 2 * j far vardet %d \n", i = j = 2 * j ); printf( "och \t\t i = %d och j = %d \n", i, j ); return 0; } eftersom tilldelning betraktas som ett uttryck så har uttrycket ett värde, i detta fall 10. Det går även att göra multipla tilldelningar från höger till vänster .
46
Villkorsoperatorn den enda operatorn med tre operander
47
Villkorsoperatorn den enda operatorn med tre operander
minns ni det här exemplet? I detta program används villkorsoperatorn.
48
Villkorsoperatorn den enda operatorn med tre operander
om detta uttryck är sant så gör detta annars det här minns ni det här exemplet? I detta program används villkorsoperatorn.
49
Villkorsoperatorn syntax
uttryck 1 ? uttryck 2 : uttryck 3 beräkningen går till så att uttryck 1 beräknas först. Om detta uttryck får ett värde som inte är noll ( sant ) så beräknas därefter uttryck 2 och resultatet av hela villkorsuttrycket blir lika med värdet av uttryck 2. Om å andra sidan uttryck 1 får vardet 0 (falskt) beräknas i stället uttryck 3 och resultatet av hela villkorsuttrycket blir lika med värdet av uttryck 3.
50
Sant och falskt en kommentar
i C finns ingen speciell datatyp ( boolsk ) för att hantera sant resp falskt utan dessa är av typen ”heltal” heltalsvärdet 0 står för falskt i ett relevant sammanhang alla andra heltalsvärden står för sant i ett relevant sammanhang, dvs inte bara heltalsvärdet 1
51
= *= /= %= += -= <<= >>= &= ~= |=
Operatorprioritet högst prioritet har de unära postfixoperatorerna [] () . -> sedan kommer de unära prefixoperatorerna & * ~ ! (typnamn) därefter de aritmetiska ( rikning V till H ) * / % skiftoperatorer ( rikning V till H ) << >> jämförelseoperatorerna ( rikning V till H ) < > <= >= == != bit-operatorerna ( rikning V till H ) & ^ | logiska operatorer ( rikning V till H ) && || villkorsoperatorn ( rikning H till V ) ? uttryck : tilldelningsoperatorer ( rikning H till V ) = *= /= %= += -= <<= >>= &= ~= |= kommaoperatorn ( riktning V till höger ) ,
52
= *= /= %= += -= <<= >>= &= ~= |=
Operatorprioritet högst prioritet har de unära postfixoperatorerna [] () . -> sedan kommer de unära prefixoperatorerna & * ~ ! (typnamn) därefter de aritmetiska ( rikning V till H ) * / % skiftoperatorer ( rikning V till H ) << >> jämförelseoperatorerna ( rikning V till H ) < > <= >= == != bit-operatorerna ( rikning V till H ) & ^ | logiska operatorer ( rikning V till H ) && || villkorsoperatorn ( rikning H till V ) ? uttryck : tilldelningsoperatorer ( rikning H till V ) = *= /= %= += -= <<= >>= &= ~= |= kommaoperatorn ( riktning V till höger ) , Vad blir värdet av uttrycken nedan? int a=2, b=11, c=5 ; a+=30/-++c-+29%b a+=30/-c++-+29%b #include <stdio.h> int main( void ) { int a=2, b=11, c=5 ; printf( "Uttrycket a+=30/-++c-+29%%b = %d", a+=30/-++c-+29%b ); return 0; } Exekveringsresultat ?? #include <stdio.h> int main( void ) { int a=2, b=11, c=5 ; printf( "Uttrycket a+=30/-c++-+29%%b = %d", a+=30/-c++-+29%b ); return 0; } ??
53
Facit till operatoruppgiften
Vad blir värdet av uttrycket nedan? int a=2, b=11, c=5 ; a+=30/-++c-+29%b a += 30/-++c - +29%b a = /-6 – 29%11 a = 2 –5 – 7 a = -10
54
Facit till operatoruppgiften
Vad blir värdet av uttrycket nedan? int a=2, b=11, c=5 ; a+=30/-c++-+29%b a += 30/-c %b a = /-5 – 29%11 a = 2 –6 – 7 a = -11
55
På web-tentan
56
Slut
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.