C初学者没有终止程序

时间:2017-10-03 16:16:42

标签: c sum termination

我是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;
}

请您查看我的代码并告诉我我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的i是一个全局变量,因此在mainmi_atoi之间共享。每次拨打mi_atoi时,都会重置i,因此main中的循环永远不会终止。

你巧妙地试图通过不发布i的声明(更不用说Minimal, Complete, and Verifiable Example)来隐藏错误,但我们可以看到i未被声明为本地变量你发布的功能。