Anders Sjögren Operatorer
Anders Sjögren Operand(er)
Anders Sjögren Operator och operand 3 + 2
Anders Sjögren Aritmetiska operatorer i C
Anders Sjögren Aritmetiska operatorer i C +addition - subtraktion ·multiplikation /division %modulo-operatorn, resten vid positiv heltals-division -negation, unär operator
Anders Sjögren Aritmetiska operatorer i C +addition - subraktion ·multiplikation /division %modulo-operatorn, resten vid positiv heltals-division -negation, unär operator Exempel
Anders Sjögren Aritmetiska operatorer i C exempel
negation - 2
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division / 2
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation / 2 * 3
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion / 2 * 3 - 1
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion / 2 * detta är ett uttryck
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion / 2 * detta är ett uttryck uttryck i C har ett värde av en viss typ, i detta fall 3 ( int )
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion / 2 * 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
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion / 2 * operatorernas prioritet är den vanliga matematiska
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion ( ) / 2 * operatorernas prioritet är den vanliga matematiska vill man ändra prioritetsordning så gör man det med parenteser
Anders Sjögren Aritmetiska operatorer i C exempel negation, addition, division, multiplikation, subtraktion ( ) / 2 * 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
Anders Sjögren Aritmetiska operatorer i C exempel ett varningens ord om division, och som också brukar dyka upp som tentamensfråga.....
Anders Sjögren Aritmetiska operatorer i C exempel vad tror du 9/2 är?.....
Anders Sjögren Aritmetiska operatorer i C exempel vad tror du 9/2 är?.....
Anders Sjögren Aritmetiska operatorer i C exempel vad tror du 9/2 är?..... hmm, ja det är väl 4,5?
Anders Sjögren Aritmetiska operatorer i C exempel vad tror DU ?
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
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; }
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
Anders Sjögren Aritmetiska operatorer i C exempel hmm, men vad gör den där modulo-grejen? %
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!
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
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 % !
Anders Sjögren Aritmetiska operatorer i C undrar hur man gör med de där?
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 !
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
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
Anders Sjögren Aritmetiska funktioner i C intabs(int ); long labs(long ); några funktioner ur stdlib.h
Anders Sjögren ”Öka eller minska med ett” - operatorn
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
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
Anders Sjögren Jämförelseoperatorer
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
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
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!
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
Anders Sjögren Iteration i C exempel #include #define DELAY L 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
Anders Sjögren Tilldelningsoperatorer de vanligaste
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
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
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.
Anders Sjögren Villkorsoperatorn den enda operatorn med tre operander
Anders Sjögren Villkorsoperatorn den enda operatorn med tre operander minns ni det här exemplet? I detta program används villkorsoperatorn.
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
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.
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
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
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
Anders Sjögren Slut