Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t在C+中为64位最小值分配64位数字+; 我是C++新手,如果这听起来像个愚蠢的问题,那么抱歉。我试图将64位最小值(-9223372036854775808)分配给int64_t(来自cstdint),但是我收到了当前的错误消息: main.cpp:5:27: warning: integer literal is too large to be represented in a signed integer type, interpreting as unsigned [-Wimplicitly-unsigned-literal] int64_t int_64_min = -9223372036854775808;_C++_64 Bit - Fatal编程技术网

Can';t在C+中为64位最小值分配64位数字+; 我是C++新手,如果这听起来像个愚蠢的问题,那么抱歉。我试图将64位最小值(-9223372036854775808)分配给int64_t(来自cstdint),但是我收到了当前的错误消息: main.cpp:5:27: warning: integer literal is too large to be represented in a signed integer type, interpreting as unsigned [-Wimplicitly-unsigned-literal] int64_t int_64_min = -9223372036854775808;

Can';t在C+中为64位最小值分配64位数字+; 我是C++新手,如果这听起来像个愚蠢的问题,那么抱歉。我试图将64位最小值(-9223372036854775808)分配给int64_t(来自cstdint),但是我收到了当前的错误消息: main.cpp:5:27: warning: integer literal is too large to be represented in a signed integer type, interpreting as unsigned [-Wimplicitly-unsigned-literal] int64_t int_64_min = -9223372036854775808;,c++,64-bit,C++,64 Bit,代码如下: #include <iostream> #include <cstdint> int main() { int64_t int_64_min = -9223372036854775808; std::cout << int_64_min << std::endl; std::cout << INT64_MIN << std::endl; return 0; } #包括 #包括

代码如下:

#include <iostream>
#include <cstdint>

int main() {
    int64_t int_64_min = -9223372036854775808;
    std::cout << int_64_min << std::endl;
    std::cout << INT64_MIN << std::endl;
    return 0;
}
#包括
#包括
int main(){
int64_t int_64_min=-9223372036854775808;

问题是
-9223372036854775808
不是一个文本。
9223372036854775808
是一个文本,
-9223372036854775808
是一个表达式,由该文本组成,并应用一元
-


所有不固定十进制文字的类型都是
int
long int
long long int
。由于
9223372036854775808
是263,它大于
long long int
的最大值(假设
long long int
是64位,几乎可以肯定是)

最简单的解决方案是使用
中定义的
INT64\u MIN

除此之外,问题是负值没有文字。另一种解决方案是用
-9223372036854775808
替换
-9223372036854775807-1
——或
(-9223372036854775807-1)
,以避免歧义。(
标题很可能做类似的事情).

这正是为什么
INT\u MIN
宏族通常被定义为2的补码平台上的
-INT\u MAX-1
(C++20中几乎无处不在且必须)

在C++中没有负文本:只有正数的一元否定,它产生一个编译时可计算的常量表达式


9223372036854775808
太大,无法放入64位有符号整数类型,因此对其求反并分配给有符号64位整数类型的行为由实现定义


编写<代码> -922337203685477580—1 < /C>可能是C++标准库实现的。如果我是你,我会直接使用<代码> In64 Smith或<代码> STD::MultIcILimLime::Min()<代码> > <代码> 922337203685477580代码>代码>太大,不能适合64位整数。<代码> -/COD>是一个应用于该数字的运算符,这并不意味着数字被解析为负数。如果这是C++,那么请取悦我们<代码> STD::MultCimuliLime::Min()
取而代之的是
。这回答了你的问题吗?@AdrianMole这根本不是真的。这里的后缀并不重要。“整型文字的类型是值可以适应的第一种类型,它来自于类型列表,取决于使用了哪个数字基和哪个整型后缀。”请参阅。这里最小的此类类型是无符号64位整数(我应该在前面更清楚地说是64位有符号整数),请查看链接下的表格。如果没有后缀,则列出所有整数类型。(注意java对于整数常量有不同的规则——如果你来自这样的背景,那么你可能会发现C++规则令人吃惊。首先,欢迎C++!)