gpt4 book ai didi

c - Objective-C代码中的奇怪数字变化

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:35 25 4
gpt4 key购买 nike

我有这个代码来分解在控制台输入的数字并返回它们,我对负数也这样做,但这是我输入 0123 并且数字被转换为 83。我是 objective-c 和 c 的新手,所以我需要一些解释为什么会这样。从首次发布这段代码时我还注意到,更改实际上发生在 scarf 函数中,甚至没有发生在主代码块中。这是我的代码:

//
// 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 解析例程,它对此类事情有更好的接口(interface)。

关于c - Objective-C代码中的奇怪数字变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38204745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com