fanqiyuan 发表于 2021-3-28 22:00:40

数据类型求助

#include<stdio.h>
#include<math.h>
int main(){
        unsigned long long sum;
        unsigned long long temp;
        for(int i=0;i<64;i++){
                temp=pow(2,i);
                sum = sum + temp;
        }
        printf("%llu\n",sum);
        return 0;
}
为什么sum=0?求助

Daniel_Zhang 发表于 2021-3-29 01:17:52

unsigned long long sum = 0;

试试看?

unsigned long long sum; 没有初始化

sum = sum + temp; 的时候会很危险,因为不知道 sum 初始是多少

此时的 sum 是一个随机值

temp 初始化为 0 与否在这里并没有影响,因为 temp=pow(2,i); 是直接赋值给 temp 的

而不是像sum = sum + temp; 那样,调用上一轮的 sum 然后再赋值给 sum

fanqiyuan 发表于 2021-3-30 13:46:31

谢谢
页: [1]
查看完整版本: 数据类型求助