问题标签 [long-long]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1543 浏览

GCC ARM C 编译器不尊重 -std=c99 用于 %llx printf 格式化代码

我正在尝试使用以下内容打印一些 64 位无符号整数:

我得到这个回应:

如果我将格式化字符串更改为 %016lx,我会收到使用错误类型的编译警告,并且它只打印低 32 位:

我的编译器选项中有 -std=c99 字符串,它应该强制执行 ll 选项,对吗?

作为参考,这是最新版本的 Silicon Labs 的 Simplicity Studio IDE 附带的 arm-none-eabi-gcc 编译器 (v4.7.3)。

0 投票
3 回答
346 浏览

打印 INT 的最大值

我尝试打印程序中的最大值int。使用以下代码::

我得到的输出是::2147483647

但是,当我将我的printf语句更改为printf("%lld",INT_MAX);我的输出时,就会变成577732524332023807. INT_MAX值应该在的范围内long long int,那为什么它不能转换INT_MAX成正确的数字long long int

感谢您提前提供任何帮助。

0 投票
1 回答
8392 浏览

是否存在将 double 转换为 long long 的优雅方式?

我想得到integer partdouble但是这种方式对我不起作用:

这是由于事实,double integer可能有e-notation。例如,3.41e10是正确的双数。

我的测试用例是:

  • 双 -> 长长
  • 234343.0 -> 234343
  • 3.41e10 -> 34100000000
  • 19.999999999 -> 19
  • -10.1 -> -10
  • -0.0000001 -> 0

有什么漂亮的方法可以完成我的任务吗?

0 投票
3 回答
107 浏览

使用递归的 C 程序需要得到优化和修复

我正在解决一项任务 - 用户正在输入 3 个数字,a, b, c. 目标是找出是否可以c求和ab。在每个步骤中都允许添加atobbto a。我需要确定输入的数字是否可行。输入的数字在0和之间10^18。下面是我的代码,用递归完成。

解决任务的示例a=4 b=6 c=38

  1. a=4 b=10
  2. a=14 b=10
  3. a=14 b=24
  4. a=38 b=24 print YES

我下面的代码对于低数字做得很好,但我认为我正在失去与更大数字的战斗......我添加了一些评论来说明什么部分正在做什么。

我需要帮助的是,我需要它更好、更快地工作,我不知道如何进一步优化它。

0 投票
1 回答
9384 浏览

用 unsigned int 大小声明一个 long long 数组

当我在将数组声明为时遇到分段错误时,我正在做一个问题:

在哪里,

findMax 是以下类型的函数:

我该如何解决这个问题?

0 投票
4 回答
94 浏览

为什么不会自动分配 long long 类型的值?

使用 auto,我创建了一个变量号并使用 cin.get 来获取值。我使用此代码来执行此操作:

似乎即使我输入了一个超过 2147483647 的数字,该值仍然被分配为 int 类型。为什么是这样?如果数字超过最大 32 位 int 值,不应该自动分配 long 类型的值吗?

0 投票
1 回答
1109 浏览

打印 long long int 时出错

我是 C++ 新手。我编写了一个使用unsigned long long int数据类型的程序。

我无法正确打印变量

这是代码:

标准输入:

预期输出:

观察到的输出:

0 投票
3 回答
332 浏览

无法在 C 中打印长整数

我知道这个主题有很多主题,但没有一个能帮助我解决我的问题。我在 Code::Blocks 上工作(在“属性>项目构建选项>编译器设置>其他选项”中使用选项 -std=c99)并且以下代码没有给出预期的输出:

事实上,我在终端中获得了“值:0”。我该如何解决这个问题?

当我写 30 而不是 33(所以 val 是一个整数)时,我得到了正确的答案。我也尝试过 %lld 但这没有帮助。

0 投票
0 回答
115 浏览

推力忽略长长

Thrust 将long long int视为long int。这是一个演示程序:

输出是:

第一个 141006540​​8 应该是 10000000000。

我这样编译它:

nvcc -arch=compute_30 -std=c++11 longlongb.cu -o longlongb

0 投票
4 回答
4547 浏览

Long long is 8 bytes, meaning?

I've read the answers to the question of why sizeof(long long) is 8 on most systems, but I'm still not sure how to interpret the meaning of them.

One of the reasons given is that there is a lot of code 'out there' which assumes that sizeof(long long) <= sizeof(size_t). That makes sense. Then there are all kinds of views on architecture conventions and brands, etc. I don't even want to get into those debates about the history of the convention. There are also reasons given that long long can be any size according to standard, but I think that is not really what concerns me.

What I want to know is how to interpret the difference now between the fact that sizeof(long long) returns 8 but that a long long actually is 16. Should it be interpreted as a historical remnant that applies only to the sizeof operator, or is there an underlying address pointer associated with that fact, so that operations on a long long are executed in 8 byte increments?

Sizeof (signed) long v4: 8 Value of (x at 2147483647)v4: 7fffffff

Sizeof long long v5: 8 Value of (x at 9223372036854775807)v5: 7fffffffffffffff