```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,你这个太大了,可以用高精度实现
数字太大,早就溢出了。
不知道你这个问题是否已经解决, 如果还没有解决的话:这段代码的输出是0,是由于使用了cout
输出的变量a
是long 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
输出何种类型的变量,都应该使用对应的格式化符号来确保输出的正确性。