Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.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
C++ 为什么;自动x=-2147483648&引用;是否将x设置为无符号长类型而不是int类型?(VS2017)_C++_Visual C++_Types - Fatal编程技术网

C++ 为什么;自动x=-2147483648&引用;是否将x设置为无符号长类型而不是int类型?(VS2017)

C++ 为什么;自动x=-2147483648&引用;是否将x设置为无符号长类型而不是int类型?(VS2017),c++,visual-c++,types,C++,Visual C++,Types,在C语言中,int类型的范围是“-2147483648~2147483647” 我认为-2147483648可以表示为int类型,但可以表示为无符号long。此外,-2147483648超出了无符号长类型的范围 为什么 (我正在使用Visual Studio 2017) 编辑! 哇。我读了评论,我意识到我的问题应该更准确 1) 是的,在C++语言中,而不是在C语言中。(对不起) 2) 整型范围?: INT_MIN在极限中定义。h auto x = -2147483648; // (unsign

在C语言中,int类型的范围是“-2147483648~2147483647”

我认为-2147483648可以表示为int类型,但可以表示为无符号long。此外,-2147483648超出了无符号长类型的范围

为什么

(我正在使用Visual Studio 2017)


编辑! 哇。我读了评论,我意识到我的问题应该更准确

1) 是的,在C++语言中,而不是在C语言中。(对不起)

2) 整型范围?:

INT_MIN在极限中定义。h

auto x = -2147483648; // (unsigned long)
auto y = -2147483647; // (int)
//
//限制
//
//版权所有(c)微软公司。版权所有。
//
//C标准库标题。
//
#定义SHRT_MIN(-32768)//最小(有符号)短值
#定义SHRT_MAX 32767//最大(有符号)短值
#定义USHRT_MAX 0xffff//最大无符号短值
#定义INT_MIN(-2147483647-1)//最小(有符号)INT值
#定义INT_MAX 2147483647//最大(有符号)INT值
#定义UINT_MAX 0xffffffff//最大无符号整数值
#定义LONG_MIN(-2147483647L-1)//最小(有符号)LONG值
#定义长\u MAX 2147483647L//最大(有符号)长值
#定义ULONG_MAX 0xffffffffUL//最大无符号长值
#定义LLONG_MAX 9223372036854775807i64//最大有符号长整型值
#定义LLONG_MIN(-9223372036854775807i64-1)//最小有符号长整型值
#定义ULLONG_MAX 0xFFFFFFFFFFFFUI64//最大无符号长整型值

C中没有自动类型推断。没有类型说明符的Lone
auto
表示
auto int
或格式不正确,具体取决于您所谈论的C标准的年份。隐式int特性在1999年从该语言中删除

如果您的工具告诉您
x
属于
unsigned long
类型,那么它们要么是有缺陷的,要么是为C以外的语言设置的(或两者兼而有之)

注意,这个答案是用C标记加上标签而没有提到C++的。


答案说明
-2147483648
与C语言中的
-(2147483648)
相同,int类型的范围是
。你怎么知道呢?有趣的是
-2147483648
不是一个整数常量
2147483648
是一个,并且
-
应用于它。@NickyC-不。OP显然是作为C++构建的,但不知道它是C++。@ NickyC中的C,<代码> AutoXX/COD> >与代码>自动INTX < /代码>。代码>自动表示一个自动变量。(所以不是静态的)@NickyC-如果OP只是提出了一个问题,而没有停留几分钟来澄清任何疑问(我们很快就提出了我们的担忧),那么我们应该投否决票,继续我们的一天。这个职位是应得的。
//
// limits.h
//
//      Copyright (c) Microsoft Corporation. All rights reserved.
//
// The C Standard Library <limits.h> header.
//

#define SHRT_MIN    (-32768)        // minimum (signed) short value
#define SHRT_MAX      32767         // maximum (signed) short value
#define USHRT_MAX     0xffff        // maximum unsigned short value
#define INT_MIN     (-2147483647 - 1) // minimum (signed) int value
#define INT_MAX       2147483647    // maximum (signed) int value
#define UINT_MAX      0xffffffff    // maximum unsigned int value
#define LONG_MIN    (-2147483647L - 1) // minimum (signed) long value
#define LONG_MAX      2147483647L   // maximum (signed) long value
#define ULONG_MAX     0xffffffffUL  // maximum unsigned long value
#define LLONG_MAX     9223372036854775807i64       // maximum signed long long int value
#define LLONG_MIN   (-9223372036854775807i64 - 1)  // minimum signed long long int value
#define ULLONG_MAX    0xffffffffffffffffui64       // maximum unsigned long long int value