【发布时间】:2013-09-24 01:49:19
【问题描述】:
我正在从 Java 过渡到 C++,并且对 long 数据类型有一些疑问。在 Java 中,要保存大于 232 的整数,您只需编写 long x;。但是,在 C++ 中,long 似乎既是数据类型又是修饰符。
long似乎有几种使用方式:
long x;
long long x;
long int x;
long long int x;
另外,好像有这样的东西:
long double x;
等等。
所有这些不同的数据类型有什么区别,它们的目的是否相同?
【问题讨论】:
-
@user2612743 - 为了安全起见,请考虑您的要求并使用适当的类型。
long long可能比long慢,后者可能比int慢。 -
不,“为了安全,用long long”就等于说“为了安全,给每个人一个地球艾滋病,所以我们不用担心安全性行为,我们”反正大家都已经拿到了!”傻,不是吗?考虑数据及其可能具有的值,并使用最合适的类型。这也有助于编译器在不破坏原始代码意图的情况下进行额外的优化,例如如果它必须加载额外的库来处理大于目标平台自然位宽的数字。
-
对 win32 列表框等使用 long long 不会破坏您的内存和其他变量 - 即使没有违反限制。即使有看似无害的 C4244 警告,也不容易检测到。
标签: c++ long-integer