长期比较

时间:2013-02-20 11:01:25

标签: c long-integer

我有以下代码

long x;
scanf("%ld",&x)
if(x==-1) // does this comparison is allowed
    printf("just test\n");

long参数在比较之前是否需要任何投射?

2 个答案:

答案 0 :(得分:7)

-1是小数int。存在从intlong的隐式转化(促销),因此-1会自动“投放”到long

此外,-1x都是签名类型。不需要任何额外的演员。

答案 1 :(得分:3)

正如我所说,那没关系。如果你想避免“类型焦虑”,你可以使文字具有类型long

if(x == -1l)
          ^
          |
     lower-case 'L'
    means "long int"

但在某些情况下,这本身就有点焦虑。