【问题标题】:Value of a Short type variable [closed]Short 类型变量的值
【发布时间】:2014-12-26 13:17:52
【问题描述】:

代码是这样的:

 short x=30;
 short y=32760,z;
 z= x+y;
 int w= z*z;
 cout<< " w = "<< w << " z= " << z;

输出如下: w = 1072300516 z= -32746

为什么会这样?

【问题讨论】:

  • max short 是 32768。你有一个溢出,导致 -32746。 int 大于 short,这就是 w 不溢出的原因
  • 但是为什么是负号,为什么是这个随机值?背后有什么计算吗?
  • 因为位表示。最高位指定该值是正数还是负数。例如,1001 为负数,0001 为正数。如果您的值已经很大(011111111)并且您添加了一个值,则会导致溢出导致负数(0111 + 0011 = 1010)
  • 也请不要大喊大叫!!

标签: c++ output short


【解决方案1】:

short 可以持有的最大数量为 32767。当您将 32760 和 30 相加时,您得到 32790,这超过了short 可以持有的数量。因此发生溢出并且您的号码“环绕”。这就是你得到 z 为负数的原因。

–32768 --- 0 --- 32767

如果您以这种方式思考short,您就会理解它。当数字太大时,它会再次走向消极的一面。

【讨论】:

    【解决方案2】:
     z= x+y;      <<<<< 32790 is beyond the grasp of short
    

    这会导致溢出,因为您正在跨越做空可以采取的最大值。

    【讨论】:

    • 那么输出值基本上就是垃圾值了?后面没有计算?
    • @FariyaTasleem 不,它的定义很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    相关资源
    最近更新 更多