我是C的初学者,我收到了编写简单求和程序的任务,我必须使用自己的atoi函数。
这种行为很奇怪:
总和1 - >工作正常,写道"总和是1"
和1 2 - >它没有终止
sum -1 -2 - >它只写第一个数字,如果我使用超过2,它不会终止
这是代码的一些部分,我想错误在mi_atoi中,因为如果我使用库函数它会正常工作:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if (self.lastContentOffset > scrollView.contentOffset.y + 0) {
print("scrolling up")
}
else if (self.lastContentOffset < scrollView.contentOffset.y) {
print("scrolling down")
}
self.lastContentOffset = scrollView.contentOffset.y
}
这里是主要的(函数esNumero只是检查参数是否是一个数字而且工作正常):
unsigned int char2int(char c)
{
return c-'0';
}
int mi_atoi(char *s)
{
int x = 0;
if (s[0] == 45) {
for (i = 1; s[i] != '\0'; i++) {
x = x*10 - char2int(s[i]);
}
}
else {
for (i = 0; s[i] != '\0'; i++) {
x = x*10 + char2int(s[i]);
}
}
return x;
}
请您查看我的代码并告诉我我做错了什么?
答案 0 :(得分:0)
您的i
是一个全局变量,因此在main
和mi_atoi
之间共享。每次拨打mi_atoi
时,都会重置i
,因此main
中的循环永远不会终止。
你巧妙地试图通过不发布i
的声明(更不用说Minimal, Complete, and Verifiable Example)来隐藏错误,但我们可以看到i
未被声明为本地变量你发布的功能。