C++ 64位整型输出问题
这样一段代码:求1到n的累加和。
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
cout<<(n*n+n)/2;
return 0;
}
当n取一个很大的数,比如1000000000时,发现输出的是一个负数。
而且我试着定义一个64位整型变量:
long long s = (n*n+n)/2;
cout<<s;
依然输出负数。
是cout的默认输出范围不够吗?怎么解决?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
n
的类型需要是long long
才行。C++的数据类型,除了
char
是精确定义为1字节
大小之外,其它数据的大小都是不确定的,能确定的只有最小值,关于这一点,可以 参考这里这个表格列出了各种数据类型以及它们的大小,并且在后面有一个说明:
大概意思是说
char
的大小是精确定义的,其它类型按顺序一个比一个大(或等),但其大小都是不确定的,由编译器根据不同的架构(指CPU)等因素定义。根据这个说明,如果你想使用
64
位的整数,定义成long long
才稳当