c++为什么这段代码的输出是0啊

img

img



```c++

#include<iostream>
#include<string>
using namespace std;
int main()
{
    long long a = 2;
    while (a<10000000000000000000)
    {
        cout << a << endl;
        a=a*2;
    }

    return 0;
}

```

这个范围太大了,数字溢出,long long 的范围是2^63-1,你这个太大了,可以用高精度实现

数字太大,早就溢出了。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7558659
  • 这篇博客你也可以参考下:c++输出字符串
  • 您还可以看一下 郝悦集老师的C++编程课程中的 C++输入输出流-标准输入输出流小节, 巩固相关知识点
  • 除此之外, 这篇博客: c++刷题自定义输入输出中的 1、输入一个数组 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    这段代码的输出是0,是由于使用了cout输出的变量along long类型,而在C++中,将long long类型的变量用cout输出时,需要使用%lld作为格式化符号。因此,修改代码中的cout << a << endl;cout << %lld << a << endl;即可正确输出变量a的值。

    以下是修改后的代码:

    #include<iostream>
    #include<string>
    using namespace std;
    
    int main() 
    {
        long long a = 2;
        while (a<10000000000000000000)
        {
            cout << %lld << a << endl;
            a=a*2;
        }
    
        return 0;
    }
    

    请注意,在代码中%lld的使用是重要的,它用于指示cout输出的内容是long long类型的变量。无论是使用cout输出何种类型的变量,都应该使用对应的格式化符号来确保输出的正确性。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^