objective-c 代码中的奇怪数字变化
strange number change in objective-c code
我有这个代码来分解在控制台输入的数字和 return 它们,我对负数也做同样的事情,但这是我输入 0123
并且数字得到的奇怪行为转换为 83
。我是 objective-c 和 c 的新手,所以我需要一些解释为什么会这样。
我还从首次发布这段代码时注意到,更改实际上发生在 scarf function
中,甚至不在主代码块中。
这是我的代码:
//
// 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;
}
它的行为如文档所述 - 整数常量的前导零前缀表示八进制数,因此 0123
(以 8 为基数)只是 83
(以 10 为基数)。
查看 scanf
的文档以了解这些转换的完整详细信息。也支持十六进制。如果您正在编写 Objective-C 代码,我建议您查看 NSString
解析例程,它对这类事情有更好的接口。
我有这个代码来分解在控制台输入的数字和 return 它们,我对负数也做同样的事情,但这是我输入 0123
并且数字得到的奇怪行为转换为 83
。我是 objective-c 和 c 的新手,所以我需要一些解释为什么会这样。
我还从首次发布这段代码时注意到,更改实际上发生在 scarf function
中,甚至不在主代码块中。
这是我的代码:
//
// 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;
}
它的行为如文档所述 - 整数常量的前导零前缀表示八进制数,因此 0123
(以 8 为基数)只是 83
(以 10 为基数)。
查看 scanf
的文档以了解这些转换的完整详细信息。也支持十六进制。如果您正在编写 Objective-C 代码,我建议您查看 NSString
解析例程,它对这类事情有更好的接口。