首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在after变量中,我应该在哪里使用ULL?

在after变量中,我应该在哪里使用ULL?
EN

Stack Overflow用户
提问于 2021-07-11 22:26:48
回答 2查看 135关注 0票数 0

我在试着解决一个关于codeforce的问题。我必须提供输入

代码语言:javascript
复制
1000000000 1000000000 1   

添加到此代码

代码语言:javascript
复制
#include <iostream>
using namespace std;
int main()
{
long n,m,a;
cin >> n >> m >>a ;
long b,c;
b = (n%a==0)?(n/a):((n/a)+1);
c = (m%a==0)?(m/a):((m/a)+1);

unsigned long long  d ;
d = b*c  ;
cout<<d;

但它给了我错误

代码语言:javascript
复制
Diagnostics detected issues [cpp.clang++-diagnose]: p71.cpp:12:5: runtime error: signed 
integer overflow: 1000000000 * 1000000000 cannot be represented in type 'long'
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior p71.cpp:12:5 in

然后我知道我应该在一个数值型文字上加上ULL后缀。但是我应该如何在这种类型的代码中使用ULL;

EN

回答 2

Stack Overflow用户

发布于 2021-07-11 22:31:03

在after变量中应该在哪里使用ULL?

不能在变量后使用ULL。它是整型文字的后缀。您应该在那些您希望为unsigned long long类型的整型文字之后使用ULL,因为后缀就是这样做的。

所有整数类型都有一个上限(以及下限)。确切的最大值是特定于每个系统的,尽管语言标准确实指定了一个下限作为要求。如果您知道计算将超过特定类型的限制,则必须使用更大的类型。如果您不知道计算的最大结果,或者您知道它将超过最大整数类型的限制,那么您必须改变策略,而不是使用普通整数类型:相反,您需要使用任意精度的算术。

票数 1
EN

Stack Overflow用户

发布于 2021-07-11 22:43:51

...在after变量中,我应该在哪里使用ULL?

ULL不适用于变量。

=左侧的类型不会影响右侧的计算。

代码语言:javascript
复制
long b, c;
...
unsigned long long  d;
d = b*c; // long multiplication and long product.

为了从unsigned long long的潜在扩展范围中获益,请确保long long乘法。不同的方法。

代码语言:javascript
复制
d = b; // in 2 steps
d *= c;

d = (long long) b * c;  // Cast

d = 1LL * b * c; // let compiler form effect code 

请注意,当bc为负时,上述第一个结果与第二个和第三个结果不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68337104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档