我有以下代码
long x;
scanf("%ld",&x)
if(x==-1) // does this comparison is allowed
printf("just test\n");
long
参数在比较之前是否需要任何投射?
答案 0 :(得分:7)
-1
是小数int
。存在从int
到long
的隐式转化(促销),因此-1
会自动“投放”到long
。
此外,-1
和x
都是签名类型。不需要任何额外的演员。
答案 1 :(得分:3)
正如我所说,那没关系。如果你想避免“类型焦虑”,你可以使文字具有类型long
:
if(x == -1l)
^
|
lower-case 'L'
means "long int"
但在某些情况下,这本身就有点焦虑。