Fibonacci序列在python中工作,但不在c中?

Pro*_*mah 5 c python fibonacci

我有以下python代码:

a, b = 1, 1
for i in range(0, 100):
    print a
    a, b = b, a + b
Run Code Online (Sandbox Code Playgroud)

它产生了这个:1 1 2 3 5 8等

我在c中写了同样的文章:

#include <stdio.h>
long long unsigned int a = 1, b = 1;
void main(){
    for(int i = 0; i < 100; i++){
        printf("%llu \n", a);
        a = b, b = a + b;
    }
}
Run Code Online (Sandbox Code Playgroud)

它产生了这个:1 1 2 4 8 16 32等

为什么c程序在使用完全相同的操作时会产生2的幂?

Uri*_*iel 10

a, b = b, a + b
Run Code Online (Sandbox Code Playgroud)

在python包中的值ba + b成一个元组,然后解包它放回ab.

C不支持该功能,而是使用逗号分隔分配,因此a = b, b = a + b将其翻译为

a = b;
b = a + b;
Run Code Online (Sandbox Code Playgroud)

在那里b得到一倍每次都因为分配不同时.

要解决这个问题,你必须分别分配每个变量:

b = a + b;
a = b - a; // a + b - a = b
Run Code Online (Sandbox Code Playgroud)