Это, наверное, что-то очень простое, но я не получаю ожидаемых результатов. Я прошу прощения, если это глупый вопрос, я просто не понимаю, что делать.простой вопрос о назначении float для int
Самый простой способ объяснить это с некоторым кодом:
int var = 2.0*4.0;
NSLog(@"%d", 2.0*4.0);//1
NSLog(@"%d", var);//2
if ((2.0*4.0)!=0) {//3
NSLog(@"true");
}
if (var!=0) {//4
NSLog(@"true");
}
Это производит следующий вывод:
0 //1
8 //2
true //3
true //4
Тот, что я не понимаю, это линия //1
. Почему все остальные конвертируют (я предполагаю, что правильное слово «casting», пожалуйста, поправьте меня, если я ошибаюсь) float в int, но внутри NSLog этого не происходит. Это имеет какое-то отношение к форматированию строки %d
, и это суетливо (из-за отсутствия лучшего слова)?
Yup. '% d' означает« десятичный », а не« двойной ». –
Или '% g', который интеллектуально выбирает между фиксированным десятичным и научным форматом. – Potatoswatter