2016-05-31 5 views

答えて

4

大丈夫です。これは、Cのint型が8進数として先行ゼロを持つリテラルを解釈するためです。

int a = 012; 
int b = 12; 
if (a == b) { 
    NSLog(@"%d does equal %d", a, b); 
} else { 
    NSLog(@"%d does NOT equal %d", a, b); 
} 

出力::なぜなら8進数(= 8 * 8 1)+ 2 = 10

10 does NOT equal 12 

あるこの、以下にあなたの例を適応性を実証するために

詳細は、 https://en.wikipedia.org/wiki/Integer_literal#Affixes

1

先行ゼロは、その数値がの8進数または8進数で表されていることを示します。従って、012は(1*8)+2 = 10.のように8進数に変換されます。このため、if statementfalseを返します。

int a = 012; 
int b = 12; 

NSLog(@"%d", a); 
NSLog(@"%d", b); 

if (a == b) { 
    NSLog(@"equal"); 
}else { 
    NSLog(@"not equal"); 
} 

出力:等しくありません。

関連する問題