3

誰かが私にこれを説明できますか?

if(0 <= -1)
    NSLog(@"Thank god");
if([NSArray new].count <= -1)
    NSLog(@"What the **** ? %i", [NSArray new].count);
if([[NSArray alloc] init].count <= -1)
    NSLog(@"What the **** ? %i", [[NSArray alloc] init].count );

出力は 2 回What the **** ? 0で、カウントとして 0 になると予想される出力がないと予想していました。

カウントを int に入れるかログに記録すると、0 (ゼロ) が出力されますが、if ステートメントはこれに対して true を生成します。

4

3 に答える 3

0

これです

NSLog(@"%u", -1);

出力4294967295し、0 <= 4294967295 は true です。

等しい -1 より小さい値をテストする代わりに、0 より小さい値をテストしてみてください。それは同じだ。しかし、XCodeはComparison of unsigned expression < 0 is always false、このテストを行う必要があると言っています

于 2013-08-21T12:25:20.820 に答える
0
signed int i=-1;

    if(0 <= i)
        NSLog(@"Thank god");
    if([NSArray new].count <= i)
        NSLog(@"What the **** ? %i", [NSArray new].count);
    else if([[NSArray alloc] init].count <= i)
        NSLog(@"What the **** ? %i", [[NSArray alloc] init].count );

Try this.
于 2013-08-21T12:14:05.693 に答える