これはなぜ起こっているのですか?なぜ整数が等しくないのですか?
int a = 012;
int b = 12;
if (a == b) {
NSLog(@"equal");
}else
NSLog(@"not equal");
なぜ印刷されていないのですか?
これはなぜ起こっているのですか?なぜ整数が等しくないのですか?
int a = 012;
int b = 12;
if (a == b) {
NSLog(@"equal");
}else
NSLog(@"not equal");
なぜ印刷されていないのですか?
大丈夫です。これは、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
あるこの、以下にあなたの例を適応性を実証するために
先行ゼロは、その数値がの8進数または8進数で表されていることを示します。従って、012は(1*8)+2 = 10.
のように8進数に変換されます。このため、if statement
はfalse
を返します。
int a = 012;
int b = 12;
NSLog(@"%d", a);
NSLog(@"%d", b);
if (a == b) {
NSLog(@"equal");
}else {
NSLog(@"not equal");
}
出力:等しくありません。