0
我有這個代碼分解在控制檯輸入的數字並返回它們,我對負數做同樣的操作,但這裏是奇怪的行爲,我輸入0123
並將數字轉換爲83
。我是objective-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;
}
輸入得更快。 :)所有我會補充的是,下面的鏈接是使用scanf和NSString一個很好的SO:http://stackoverflow.com/questions/3220823/using-scanf-with-nsstrings –
要清楚,這隻會發生用'%i'格式說明符。使用'%d'時,前導零將被忽略,並且十進制數被轉換。 –