【问题标题】:typecasting long to int and short in C在 C 中将 long 类型转换为 int 和 short
【发布时间】:2020-04-08 14:34:26
【问题描述】:
long x = <some value>
int y = <some value>

我想从 x 中减去 y,以下哪个会给出不同或相同的结果

 x = (int)x - y;

 x = x-y

 x = short(x) - short(y)

【问题讨论】:

  • 这取决于 x 和 y 的值以及它们是否超出了 short 或 int 的范围。你试过了吗?
  • 在投射之前,您必须确保long 适合int(例如检查INT_MIN/INT_MAX)和short 相同。 (例如SHRT_MIN/SHRT_MAX
  • short(x) 是什么?你是说(short)x 吗?无论如何 - 你为什么不试一试呢?如果你不明白你所看到的,那么你可以在这里问。
  • 你可以试试这些数字 ` x=5234000000L; y = 100; `

标签: c casting typecasting-operator


【解决方案1】:

long 类型比int“大”。较小的类型可以自动转换为较大的类型。所以,这段代码:

someLongNumber + someIntNumber

基本上等于

someLongNumber + (long)someIntNumber

所以输出将是long。如果您想将结果放在x 中,则不必强制转换。但是,如果你想把它放在y中,你必须将x操作数转换为int(int)x),或者整个操作((int)(x - y))。

【讨论】:

  • Nitpick:标准保证 longrank 大于 int,但两者的大小可能相同(唯一的保证是 @987654334 @ 至少和 int 一样宽,在 32 位 Windows 平台上,longint 实际上大小相同。此外,您所说的“自动转换”并不是真正的转换,而是在标准中称为隐式转换
  • 请考虑添加有关可能溢出的注释。
猜你喜欢
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
  • 2013-10-24
  • 1970-01-01
相关资源
最近更新 更多