- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我用 C++ Primary Plus 写了关于变量大小的程序这是代码:
#include <iostream>
#include <climits>
using namespace std;
int main() {
int n_int = INT_MAX;
short n_short = SHRT_MAX;
long n_long = LONG_MAX;
long long n_llong = LLONG_MAX;
// wielkosc
cout << "int is " << sizeof (int) << " bytes." << endl;
cout << "short is " << sizeof n_short << " bytes."<< endl;
cout << "long is " << sizeof n_long << " bytes." << endl;
cout << "long long is " << sizeof n_llong << " bytes." << endl;
cout << endl;
cout << "Maximum values: "<< endl;
cout << "int: " << n_int << endl;
cout << "short: " << n_short << endl;
cout << "long: " << n_long << endl;
cout << "long long: " << n_llong<< endl << endl;
cout << "Minimum int value = " << INT_MIN << endl;
cout << "Bits per byte = " << CHAR_BIT << endl;
return 0;
}
当我在 Eclipse IDE 中通过 Cygwin 编译并运行它时,告诉我 LONG_MAX = 9223372036854775807,这不是真的,我做错了什么?谢谢。
实际输出:
int is 4 bytes.short is 2 bytes.long is 8 bytes.long long is 8 bytes.Maximum values: int: 2147483647short: 32767long: 9223372036854775807long long: 9223372036854775807Minimum int value = -2147483648Bits per byte = 8
预期输出:
int is 4 bytes.short is 2 bytes.long is 8 bytes.long long is 8 bytes.Maximum values: int: 2147483647short: 32767long: 2 147 483 647long long: 9223372036854775807Minimum int value = -2147483648Bits per byte = 8
最佳答案
为什么你这么确定 LONG_MAX != 9223372036854775807?这对我来说似乎不错,因为 2^63 -1 == 9223372036854775807。这意味着 longs 在您的实现中是 64 位,第一位用作符号位。请记住,标准并未准确指定所有不同数据类型的大小 - 在 Visual Studio 的编译器上,long 与 int 的大小相同,这有点烦人;)
关于c++ - LONG_MAX Cygwin 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30288804/
我试图用这个递归函数打印出 LONG_MAX 的八进制值(包含在 limits.h 中): void ft_get_nbr_base(long int nb, char *base, int i
我需要声明一个大小为 LONG_MAX 的数组(2147483647,在 c 库中 ),我确实需要它来解决问题。但是代码给了我错误:如果我写 long int v[LONG_MAX];编译器给出 s
我用 C++ Primary Plus 写了关于变量大小的程序这是代码: #include #include using namespace std; int main() { int n
我正在尝试使用 fseek 单步执行一个非常大(~500 GB)的文件。由于 fseek 的第二个参数偏移量是一个 long int,因此我必须考虑何时需要的偏移量大于 2^31 - 1。这是我的解决
以下定义在GNU C编译器的limits.h头文件中, #define LONG_MAX 2147483647L 使用的 L 后缀表示数字 2147483647 应被视为长整数文字。但该语句实际
我在需要更新的算法中找到了这段代码: if (value > (unsigned long long) LONG_MAX) 编辑:value是两个相除的结果 uint64_t数字。 我明白 (uns
我有一个在 Windows 8.1 上使用 MS Visual Studio 2012 用 ANSI C 编写的函数,该函数接受一个包含 20 个 chars 空间的字符数组 lexeme 并进行检查
作为家庭作业,我正在编写一个处理大量 time_t 对象的程序。我考虑过检查它们是否溢出,但后来我想到,如果它们溢出,我们可能都会遇到麻烦。 有这方面的计划吗?当自 epoch 以来的时间超过存储空间
我正在尝试使用 git-svn 从 subversion 迁移。 现在我被失败阻塞了 $ git svn fetch 在 Git.pm 的第 900 行失败(来自 git-svn 包) ...
根据 strtol 的规范: If the subject sequence has the expected form and the value of base is 0, the sequenc
这是我用来查找 LONG 的符号常量值的代码 #include //These header files contains the symbolic constants #inc
我是一名优秀的程序员,十分优秀!