在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C  iOS/ 奇怪的for循環(huán)

奇怪的for循環(huán)

NSArray * array = [[NSArray alloc] init];
    
for (int i = 0; i < (array.count - 1); i++) {
    NSLog(@"打印%ld", array.count-1);
}

上面這段代碼,為什么控制臺不停的打印-1? 按理說不應(yīng)該執(zhí)行NSLog那句代碼啊。

回答
編輯回答
清夢

for循環(huán)沒毛病! 主要是看懂類型轉(zhuǎn)化就好理解了.
NSArray的count屬性是NSUInteger, 無符號整形, 沒有負(fù)數(shù).負(fù)數(shù)賦值為無符號整形, 那么將會變成另外一個非常大的數(shù).

clipboard.png

2017年4月4日 22:45
編輯回答
祈歡

這是進(jìn)行隱式轉(zhuǎn)換,首先array.count是NSUInteger,1會進(jìn)行轉(zhuǎn)換,也變成無符號整型,當(dāng)然兩個的運(yùn)算結(jié)果也會是無符號整型。運(yùn)算結(jié)果是 -1就回被轉(zhuǎn)化成一個很大的正數(shù),這樣你的for循環(huán)就會不停的打印。
但是

NSLog(@"打印%ld", array.count-1);

指定是按 ld類型輸出,所以會再將數(shù)據(jù)轉(zhuǎn)化成 -1.

2018年9月20日 09:48