0分,结果没问题,但是为什么

P1035 [NOIP2002 普及组] 级数求和

LUNAR_NYRAMIYA @ 2024-09-07 09:11:55

#include<bits/stdc++.h>;
using namespace std;
int main(){
        double S;
        int k;
        cin>>k;
        for(int i=1.0;i<=2000000;i++)
        {
            S=S+1.0/i;
            if(S>k)
            {
                cout<<i;
                break;
            }
            }

    }

by Eason20120229 @ 2024-09-07 09:19:11

@LUNAR_NYRAMIYA S 要初始化为 0


by LUNAR_NYRAMIYA @ 2024-09-07 09:21:36

好的,谢谢大佬


by LUNAR_NYRAMIYA @ 2024-09-07 09:22:58

过了,初始化很重要吗(挠头)


by LUNAR_NYRAMIYA @ 2024-09-07 09:28:42

找到网上资料了

在C++中,基本数据类型如double没有默认初始化值。这意味着如果你只声明了一个double变量而没有对它进行初始化,它的值将是不确定的。

如果你需要给double变量一个默认值,你必须显式地初始化它。例如:

double myDouble = 0.0; // 显式初始化为0.0 或者:

double myDouble = 3.14; // 显式初始化为圆周率的值 请注意,局部变量如果没有显式初始化,其值是未定义的,使用这样的变量会导致不确定的行为。而对于全局变量和静态变量,虽然它们不会默认初始化,但通常会被设置为0。


by xwr123456 @ 2024-09-07 09:30:08

@LUNAR_NYRAMIYA 是挺重要的,如果你不初始化=0,那个数调用时会是一个不知道的数


by LUNAR_NYRAMIYA @ 2024-09-07 09:31:19

Thanks♪(・ω・)ノ


|