展开全部
TC里int占2个字节(16位),大小范围:-2^16 ~ 2^16-1(即:-32768~32767)
而VC++里int占4个字节(32位),档雹罩大小范围:-2^32 ~ 2^32-1(即:-4 294 967 296 ~4 294 967 295)
因此在输入数字超出范围是发生会溢出。
如果输入32769,在TC中发生溢出显示-32767(注意:溢出后输出的数不是随机的,那是根据二进制存储方式算出的),而在VC++中没有溢出就显示32769
具体计算方法:肆兆
十进制数32769的二进制表示为 "1000 0000 0000 0001 "
因为第一位是符号位(最左边的一位,1代表负数,0代表正数),且符号位不变,所以取其反码
得到: " 1111 1111 1111 1110 ", 再加上 1 ,得到: "1111 1111 1111 1111 "(第一位是符号位,代表是负数)
最后得到的此二进制数即为 "1000 0000 0000 0001 " 这个的补码,
所以此补码对应的十进制数为 -32767
依照这种算补码的方式,可以此类推:
若是32767,则输出是 32767
若是32768,则输出是 -32768
若是32769,则输行闹出是 -32767
若是32770,则输出是 -32766
等等
而VC++里int占4个字节(32位),档雹罩大小范围:-2^32 ~ 2^32-1(即:-4 294 967 296 ~4 294 967 295)
因此在输入数字超出范围是发生会溢出。
如果输入32769,在TC中发生溢出显示-32767(注意:溢出后输出的数不是随机的,那是根据二进制存储方式算出的),而在VC++中没有溢出就显示32769
具体计算方法:肆兆
十进制数32769的二进制表示为 "1000 0000 0000 0001 "
因为第一位是符号位(最左边的一位,1代表负数,0代表正数),且符号位不变,所以取其反码
得到: " 1111 1111 1111 1110 ", 再加上 1 ,得到: "1111 1111 1111 1111 "(第一位是符号位,代表是负数)
最后得到的此二进制数即为 "1000 0000 0000 0001 " 这个的补码,
所以此补码对应的十进制数为 -32767
依照这种算补码的方式,可以此类推:
若是32767,则输出是 32767
若是32768,则输出是 -32768
若是32769,则输行闹出是 -32767
若是32770,则输出是 -32766
等等
展开全部
TC2.0中超过以后如果用%d显示, 会是一答旦个清知扰负数. 如果是%x还是它本身的数字.
VC6里正常, int的范围猛磨和long是一样的.
VC6里正常, int的范围猛磨和long是一样的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有区轮仿别的,tc的int型是岁轮2个乎桐信字节,所以32767+1 = -32768,而vc的int是4个字节的,不会越界,所以32767+1 = 32768!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
后面的数字就不可信啦 是电脑随机的 后者直接显示的是0 不管你怎样运算都是0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询