Ladda ner presentationen
Presentation laddar. Vänta.
1
Anders Sjögren Operatorer
2
Anders Sjögren Operand(er)
3
Anders Sjögren Operator och operand 3 + 2
4
Anders Sjögren Aritmetiska operatorer i C
5
Anders Sjögren Aritmetiska operatorer i C +addition - subtraktion ·multiplikation /division %modulo-operatorn, resten vid positiv heltals-division -negation, unär operator
6
Anders Sjögren Aritmetiska operatorer i C +addition - subraktion ·multiplikation /division %modulo-operatorn, resten vid positiv heltals-division -negation, unär operator Exempel
7
Anders Sjögren Aritmetiska operatorer i C exempel
8
negation - 2
9
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition - 2 + 4
10
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division - 2 + 4 / 2
11
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation - 2 + 4 / 2 * 3
12
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion - 2 + 4 / 2 * 3 - 1
13
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion - 2 + 4 / 2 * 3 - 1 detta är ett uttryck
14
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion - 2 + 4 / 2 * 3 - 1 detta är ett uttryck uttryck i C har ett värde av en viss typ, i detta fall 3 ( int )
15
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion - 2 + 4 / 2 * 3 - 1 detta är ett uttryck uttryck i C har ett värde av en viss typ, i detta fall 3 ( int ) #include int main( void ) { printf( "Uttrycket -2+4/2*3-1 = %d",-2+4/2*3-1 ); return 0; } OP1.EXE
16
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion - 2 + 4 / 2 * 3 - 1 operatorernas prioritet är den vanliga matematiska
17
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion (- 2 + 4 ) / 2 * 3 - 1 operatorernas prioritet är den vanliga matematiska vill man ändra prioritetsordning så gör man det med parenteser
18
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion (- 2 + 4 ) / 2 * 3 - 1 operatorernas prioritet är den vanliga matematiska vill man ändra prioritetsordning så gör man det med parenteser #include int main( void ) { printf( "Uttrycket (-2+4)/2*3-1 = %d",(-2+4)/2*3-1 ); return 0; } OP2.EXE
19
Anders Sjögren Aritmetiska operatorer i C exempel ett varningens ord om division, och som också brukar dyka upp som tentamensfråga.....
20
Anders Sjögren Aritmetiska operatorer i C exempel vad tror du 9/2 är?.....
21
Anders Sjögren Aritmetiska operatorer i C exempel vad tror du 9/2 är?.....
22
Anders Sjögren Aritmetiska operatorer i C exempel vad tror du 9/2 är?..... hmm, ja det är väl 4,5?
23
Anders Sjögren Aritmetiska operatorer i C exempel vad tror DU ?
24
Anders Sjögren Aritmetiska operatorer i C exempel prova ! #include int main( void ) { printf( "Uttrycket 9/2 = %f", (double)(9/2) ); return 0; } OP3.EXE
25
Anders Sjögren 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 int main( void ) { printf( "Uttrycket 9/2 = %f", (double)(9/2) ); return 0; }
26
Anders Sjögren Aritmetiska operatorer i C exempel så ja! Testa! #include int main( void ) { printf( "Uttrycket 9/2 = %f", (double)(9/2.) ); return 0; } OP4.EXE
27
Anders Sjögren Aritmetiska operatorer i C exempel hmm, men vad gör den där modulo-grejen? %
28
Anders Sjögren Aritmetiska operatorer i C exempel hmm, men vad gör den där modulo-grejen? % den ger resten vid heltalsdivision, kika på nästa sida!
29
Anders Sjögren 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! #include int main( void ) { printf( "Uttrycket 7%3 = %d", 7%3 ); return 0; } OP5.EXE
30
Anders Sjögren 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! #include int main( void ) { printf( "Uttrycket 7%3 = %d", 7%3 ); return 0; } OP5.EXE OBS! dubbla % !
31
Anders Sjögren Aritmetiska operatorer i C undrar hur man gör med de där?
32
Anders Sjögren Aritmetiska funktioner i C då räcker det inte med operatorer utan man får plocka fram det tunga artilleriet nämligen funktioner !
33
Anders Sjögren Aritmetiska funktioner i C 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 ); några funktioner ur math.h Exempel
34
Anders Sjögren Aritmetiska funktioner i C exempel #include int main( void ) { printf( "Uttrycket pow(2,16)-1 = %0.0f", pow(2,16)-1 ); return 0; } OP6.EXE
35
Anders Sjögren Aritmetiska funktioner i C intabs(int ); long labs(long ); några funktioner ur stdlib.h
36
Anders Sjögren ”Öka eller minska med ett” - operatorn
37
Anders Sjögren ”Ö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 int main( void ) { inti=0, j=5; printf( "Variabelvärden: i = %d \n", i ); printf( "Variabelvärden: j = %d \n", j ); printf( "Uttrycket \t ++i = %d och j++ = %d \n", ++i, j++ ); printf( "Variabelvärden: i = %d \n", i ); printf( "Variabelvärden: j = %d \n", 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 OP7.EXE
38
Anders Sjögren ”Öka eller minska med ett” - operatorn På motsvarande sätt fungerar ”minska med ett”-operatorn #include int main( void ) { inti=0, j=5; printf( "Variabelvärden: n = %d \n", i ); printf( "Variabelvärden: i = %d \n", j ); printf( "Uttrycket \t --i * j-- = %d \n", --i * j--); printf( "Variabelvärden: n = %d \n", i ); printf( "Variabelvärden: i = %d \n", 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 OP8.EXE
39
Anders Sjögren Jämförelseoperatorer
40
Anders Sjögren 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
Anders Sjögren 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 Exempel
42
Anders Sjögren Jämförelseoperatorer exempel #include int main( void ) { inti=0, j=5; printf( "Variabel i = %d och j = %d \n\n", i, j ); printf( "Uttrycket: \t i == j får vördet %d \n", i == j); printf( "och \t\t i != j får värdet %d \n", i!=j ); return 0; } OP9.EXE eftersom du gör så här måste det betyda att jämförelseuttrycken har ett heltalsvärde!? provsmaka!
43
Anders Sjögren 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 Exempel
44
Anders Sjögren Iteration i C exempel #include #define DELAY 1000000L int main( void ){ long i; while ( 1==1 ) { printf("A"); for ( i=1; i < DELAY ; i++ ) ; printf("\tn"); for ( i=1; i < DELAY ; i++ ) ; printf("\td"); for ( i=1; i < DELAY ; i++ ) ; printf("\te"); for ( i=1; i < DELAY ; i++ ) ; printf("\tr"); for ( i=1; i < DELAY ; i++ ) ; printf("\ts"); for ( i=1; i < DELAY ; i++ ) ; printf("\r \t \t \t \t \t \r"); for ( i=1; i < DELAY ; i++ ) ; } return 0; } minns ni det här exemplet? För att få en oändlig loop kan man lika gärna skriva while ( 1 ). 1
45
Anders Sjögren Tilldelningsoperatorer de vanligaste
46
Anders Sjögren 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
47
Anders Sjögren 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
48
Anders Sjögren Tilldelningsoperatorer de vanligaste #include int main( void ) { inti=0, j=5; printf( "Variabel i = %d och j = %d \n\n", i, j ); printf( "Uttrycket: \t i = j = 2 * j får vördet %d \n", i = j = 2 * j ); printf( "och \t\t i = %d och j = %d \n", i, j ); return 0; } OP10.EXE 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.
49
Anders Sjögren Villkorsoperatorn den enda operatorn med tre operander
50
Anders Sjögren Villkorsoperatorn den enda operatorn med tre operander minns ni det här exemplet? I detta program används villkorsoperatorn.
51
Anders Sjögren Villkorsoperatorn den enda operatorn med tre operander minns ni det här exemplet? I detta program används villkorsoperatorn. om detta uttryck är sant så gör detta annars det här
52
Anders Sjögren 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.
53
Anders Sjögren 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
54
Anders Sjögren 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 ), Operatorprioritet
55
Anders Sjögren 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 ), Operatorprioritet Vad blir värdet av uttrycket nedan? int a=2, b=11, c=5 ; a+=30/-++c-+29%b a+=30/-c++-+29%b op11.ex e op12.ex e
56
Anders Sjögren Slut
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.