5 svar
52 visningar
tech.60 5
Postad: 9 dec 2020

C språk;

Vad har fäljande uttryck för värd i c? 

1.2*2+1.0/2+2%5

Prova och se.

Visa spoiler
printf("1.2*2+1.0/2+2%5 = %f\n", 1.2*2+1.0/2+2%5);
tech.60 5
Postad: 9 dec 2020

Jag testade och fick 4,90000. Rätt?! 

Fundera på varför det blir 4,90000.

Tegelhus 201
Postad: 10 dec 2020

Som Lindehaven säger, försök fundera på varför det blir som det blir. En viktig del av det är att olika operatorer (t.ex. +, *, % etc) har olika prioritet, det vill säga exekveras i olika ordning. De operatorer med högst prioritet kommer att köras först. Om flera operatorer har samma prioritet, går man från vänster till höger. På sätt och vis liknar det prioriteringsreglerna i matematiken en hel del.

Du kan kolla upp operatorernas prioritet på exempelvis https://en.cppreference.com/w/c/language/operator_precedence (lägre siffra i tabellen = högre prioritet)

Visa spoiler

Förutom prioritet, kolla hur modulo-operatorn funkar.

Svara Avbryt
Close