У меня есть этот код, чтобы разбить числа, введенные на консоли, и вернуть их, и я делаю то же самое для отрицательных чисел, но вот странное поведение, которое я вводил 0123
, и число преобразуется в 83
. Я новичок в объектах c и c, поэтому мне нужно объяснение, почему это произошло. Я также заметил, дебютировав этот код, что изменение действительно происходит в scarf function
даже в основном блоке кода. Вот мой код:странное изменение количества в объектно-c-коде
//
// main.m
// ex-5.9
//
// Created by george on 05/07/2016.
// Copyright © 2016 george. All rights reserved.
// Program to reverse the digits of a number
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
int number, right_digit;
NSLog(@"Enter your number.");
scanf("%i", &number);
if(number < 0){
number = ABS(number);
do {
right_digit = number % 10;
NSLog(@"%i", right_digit);
number /= 10;
} while (number != 0);
NSLog(@"-");
}else{
do {
right_digit = number % 10;
NSLog(@"%i", right_digit);
number /= 10;
} while (number != 0);
}
}
return 0;
}
Вы набрали быстрее. :) Все, что я добавил бы, это то, что следующая ссылка является хорошим SO при использовании scanf и NSString: http://stackoverflow.com/questions/3220823/using-scanf-with-nsstrings –
Чтобы быть ясным, это произойдет только с спецификатором формата '% i'. С '% d' ведущие нули игнорируются, а десятичное число преобразуется. –