Ich hab hier folgenden Codeschnippsel:
1 | uint8_t direction = 0, old_dir;
|
2 | while(1)
|
3 | {
|
4 | old_dir = direction;
|
5 | direction = rand()%6;
|
6 | //---------------------------------------------------------------
|
7 | switch(direction)
|
8 | {
|
9 | case 0:
|
10 | if(old_dir == 1)
|
11 | direction = old_dir;
|
12 | break;
|
13 | case 1:
|
14 | if(old_dir == 0)
|
15 | direction = old_dir;
|
16 | break;
|
17 | case 2:
|
18 | if(old_dir == 3)
|
19 | direction = old_dir;
|
20 | break;
|
21 | case 3:
|
22 | if(old_dir == 2)
|
23 | direction = old_dir;
|
24 | break;
|
25 | case 4:
|
26 | if(old_dir == 5)
|
27 | direction = old_dir;
|
28 | break;
|
29 | case 5:
|
30 | if(old_dir == 4)
|
31 | direction = old_dir;
|
32 | break;
|
33 | }
|
34 | //--------------------------------------------------------------------
|
35 | if((old_dir * direction == 0) || (old_dir * direction == 6) || old_dir * direction == 20))
|
36 | direction = old_dir;
|
37 | //--------------------------------------------------------------------
|
38 | }
|
Meine Frage ist nun: Sind die beiden Codeschnippsel gleichwertig, sprich
steht am Ende das Gleiche in der Variable direction und wieviel
Ausführungszeit bzw. Zyklen braucht das auf einem ATMega32???
Auch gut geschätzte Angaben helfen mir weiter!
mfg
t3sla
PS.: Sind statt großer switch-Blöcken generell if-Abfragen vorzuziehen
und
wie lang brauchen eigentlich Ganzzahl Multiplikationen?