Sadly, your expectations don't matter a dam' to the machine, only what you tell it to do. Did you consider running the numbers, yourself, as below, and seeing what happens?
printf("%2d", fib1); // print 0 Output: 0
printf("%2d", fib2); // print 1 0 1
printf("%2d", fib3); // print 1 0 1 1
temp = fib1 + fib2; // temp = 1
fib1 = fib2; // fib1 = 1
fib2 = fib3; // fib2 = 1
fib3 = temp; // fib3 = temp = 1
printf("%2d", fib3); // print fib3 (1) 0 1 1 1
temp = fib1 + fib2; // temp = 2
fib1 = fib2; // fib1 = 1
fib2 = fib3; // fib2 = 1
fib3 = temp; // fib3 = 2
printf("%2d", fib3); // print fib3 = 2 0 1 1 1 2
temp = fib1 + fib2; // temp = 2
fib1 = fib2; // fib1 = 1
fib2 = fib3; // fib2 = 2
fib3 = temp; // fib3 = 2
printf("%2d", fib3); // print fib3 (2) 0 1 1 1 2 2