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包中的值b和a + b成一个元组,然后解包它放回a和b.
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)