Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.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++;值为65536的整数变量的输出为0且<;65536给出一个负整数,并且>;65536值给出一个正整数? 为什么在Turbo C++中,一个整数编码的硬变量值的输出为65536,小于该值(65536)是一个负整数,大于该值(65536)是正整数?_C++_C_Integer_Type Conversion_Turbo C - Fatal编程技术网

为什么用C++;值为65536的整数变量的输出为0且<;65536给出一个负整数,并且>;65536值给出一个正整数? 为什么在Turbo C++中,一个整数编码的硬变量值的输出为65536,小于该值(65536)是一个负整数,大于该值(65536)是正整数?

为什么用C++;值为65536的整数变量的输出为0且<;65536给出一个负整数,并且>;65536值给出一个正整数? 为什么在Turbo C++中,一个整数编码的硬变量值的输出为65536,小于该值(65536)是一个负整数,大于该值(65536)是正整数?,c++,c,integer,type-conversion,turbo-c,C++,C,Integer,Type Conversion,Turbo C,如果我们使用硬编码值65536初始化一个整数并打印它,它将打印0,如果我们将该整数变量的值从65536更改为65535或更小,如65534,等等,它将打印-1,-2,。。。如果我们把整型变量的值从65536改为65537或更大,它将打印1,2,3。。。等等,为什么会这样? 我在Turbo C++ IDE上验证了它。 请解释逻辑,在我初学者的时候就清楚了。 < P>古Turbo C++使用16位 int .< /p> < p>看起来你是说16位有符号值(-32768到32767),意思是把最左边

如果我们使用硬编码值65536初始化一个整数并打印它,它将打印0,如果我们将该整数变量的值从65536更改为65535或更小,如65534,等等,它将打印-1,-2,。。。如果我们把整型变量的值从65536改为65537或更大,它将打印1,2,3。。。等等,为什么会这样? 我在Turbo C++ IDE上验证了它。

请解释逻辑,在我初学者的时候就清楚了。

< P>古Turbo C++使用16位<代码> int <代码> .< /p> < p>看起来你是说16位有符号值(-32768到32767),意思是把最左边的位当作符号。 若你们把65535(1111111111111111)放进去,它会把它当作负数,因为最左边的位是1。其他位(所有位)给出的最大负值等于“-1”。它将保持负值,直到最左边的位变为0。将是32767

如果你把65536(0001 0000)-它只会削减最后16位,这一切都是零的,这个值将等于“0”

65538(0001 0000 0010)-再次将剪切最后16位,您将得到“2”


注意:一般来说,您不能保存超出类型范围的值。如果你有16位整数,它只能存储(-32768到32767),那么你不能把65535放在那里。

我猜一旦我们超过整数限制,数字的循环就会发生。 因此,一旦达到65536,正数再次开始表示更大的值


最初的限制是-32768到32767。如果我们到32768,我们实际上已经到了-32768。所以当我们到了65536,我们得到0,正数又重新开始了

你应该读一下:在你选择的编译器中,int变量类型似乎是16位,这给了它一个范围-32768到32767,或者0到65535,如果没有符号。
((x+2^15)mod 2^16)-2^15
@MajidTaheri如果你能将知识传播给一个还不具备知识的人,这不会让你变得低人一等。他是个初学者,这对他来说并不微不足道。哇,人们还在使用TurboC++?我想我上一次用IDE写东西是15年前,即使在那时,它也已经过时了。希望您的版本允许“撤消”历史记录中有多个项目!!=)