_chiyu_1236_ @ 2024-11-03 18:15:37
某人某年某月因无聊刷水题
它告诉我范围在int内
深思一下子后
#include <cstdio>
using namespace std;
int a,b;
int main(){
scanf("%d%d",&a,&b);
printf("%lld",a+b);
return 0;
}
看了一眼,自我感觉十分满意
懒得运行一遍
最后
我:?
下滑查看题目提供的代码
思考
非得用cin/cout?
好消息过了
坏消息没搞懂
继续实验
后来发现
#include <cstdio>
long long a,b;
int main(){
scanf("%lld%lld",&a,&b);
printf("%lld\n",a+b);
return 0;
}
或者
#include <cstdio>
int a,b;
int main(){
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
return 0;
}
都AC了
所以两个int型相加后输出用%lld为什么出错
by SuperAlex4 @ 2024-11-03 18:17:45
%lld 是 long long 的格式,比 int 长,所以会把 int 的符号位当成正常位输出
by 水星湖 @ 2024-11-03 18:19:53
@_chiyu1236 因为int类型使用%d,longlong使用%lld,int用%lld为什么不出错?
by Enthon_Yuan @ 2024-11-03 18:24:01
一楼正解
试试这个
printf("%lld",(int)-1);
by KarmaticEnding @ 2024-11-03 18:27:11
@_chiyu1236
这就不得不拿出这张图片了
输出的是
在
by _chiyu_1236_ @ 2024-11-03 18:47:28
@light_dream 谢谢
by _chiyu_1236_ @ 2024-11-03 18:47:41
@Enthon_Yuan ok
by _chiyu_1236_ @ 2024-11-03 18:48:25
@水星湖 主要想着强制转换一下,不过现在有答案了,负数还不能这么转
by _chiyu_1236_ @ 2024-11-03 18:48:48
@SuperAlex4 谢谢