2013-02-20 45 views
0

我有以下代码长比较

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

long参数需要进行任何造型比较之前?

+0

演员的必要性只能从某些情况下推导出来。无论如何,我不明白为什么“长”会是一个特例。 – 2013-02-20 11:04:33

回答

7

-1是小数点int。有一个从intlong的隐式转换(升级),因此-1会自动“铸造”到long。另外,-1x都是签名类型。不需要任何额外的演员。

+1

谢谢你的回答。在10分钟内接受 – MOHAMED 2013-02-20 11:05:36

3

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

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

但是,这是一个有点着急,看着本身,在某些情况下。

+4

或者直接写'-1L'。小写'l'被认为是不好的风格,因为它看起来像某些编辑器字体上的数字1。 – Lundin 2013-02-20 11:49:29