2012-12-20 138 views
0
  1. 我可以从long long int变量中减去int变量吗?从long long int中减去int int

  2. 万一我做不到:我需要存储比可以存储在int数字的比较大的数字,我不希望使用doublefloat因为我需要整数,我该怎么办?我不想全部使用long long int。有没有办法将int转换为long long int,以便我可以进行减法?

+2

当然写'int main(){long long int x = 100012u1928109111211LL; int y = 1234; printf(“%lld \ n”,x-y);返回0; }'和'gcc -Wall -std = c99 mytest.c -o mytest'比这个问题更短? –

+0

@MatsPetersson - 当然,它更短,但不会编译。

+0

你的意思是它缺少#include - 它仍然会更短... –

回答

5

是的,你可以。 int将通过常规算术转换转换为long long int为减法,使两个操作数具有相同的整数转换等级,并且结果也将是long long int

这是通过§5/ 9覆盖:

意想不到算术或枚举类型原因的转化率和产率结果类型的操作数以类似的方式,许多二进制运算符。目的是产生一个共同的类型,这也是结果的类型。这种模式被称为通常的算术转换,其被定义如下:

[...]
如果这两个操作数已签署整数类型或两者都具有无符号整数类型,则操作数 用的较小的类型整数转换等级应转换为等级较高的操作数的类型。
[...]

long long int的排名比的int等级更高。

1

是的,你可以从long long int减去int。由于int会自动加宽,因此您不需要任何明确的转换。

1
  1. 是;结果是long long(直到您将其转换为其他内容;实际上,它是long long,但您可能会将结果转换为其他类型)。

  2. N/A。