0

我有以下代码

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

在比较之前long参数是否需要任何转换?

4

2 回答 2

7

-1是一个小数intint从to有一个隐式转换(提升)long,因此-1会自动“转换”为long.

此外,两者-1x都是有符号类型。不需要任何额外的演员表。

于 2013-02-20T11:03:53.830 回答
3

正如meh所说,那很好。如果你想避免“类型焦虑”,你可以让文字有 type long

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

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

于 2013-02-20T11:24:19.077 回答