0

我正在为我的大学课程用 C 语言编写应用程序。在我的应用程序的一部分中,我迭代地增加一个整数。使用 printf 语句,我可以看出 int1 应该增加到 20,但随后运行失败。我想知道为什么会这样?

int main() {
    int i,int1=0, int2=0;
    for (i = 0; i<10; i++) {
        int1 = (int2 + 2);
        int2 = int1;
    }
}

该程序必须与 ANSI C 内联,我相信它声明使用:

int1 = (int2 + 2);

是未定义的行为,因为编译器无法保证首先处理哪个“相同”变量。(但是,如果我错了,请纠正我!)这就是为什么我采取了更长的方式,但是使用任何一种方式应用程序都失败了。

这失败的原因是什么?

4

3 回答 3

5

您的程序没有失败,您只是return 0;在程序结束时忘记了,以表明您的程序运行正确。

至于“未定义的行为”:不,那是完全有效的 C 代码。

于 2012-12-12T15:38:52.153 回答
3

您的代码看起来(并运行)很好......但关于您的“失败”评论:

In my compiler I am told that the build is successful, when the application then runs it says RUN FAILED (exit value 3, total time: 292ms

那么你的程序应该返回一个值:

int main()

说“我是一个叫做 main 的函数,我不带参数,我返回一个 int”,但是你的程序没有返回任何东西。尝试添加一个 return 语句:

int main() {
    int i,int1=0, int2=0;
    for (i = 0; i<10; i++) {
        int1 = (int2 + 2);
        int2 = int1;
    }
    return 0; // Note: a '0' return is normally success
}
于 2012-12-12T15:45:07.827 回答
1

你有

int1 = (int2 + 2);

不是

 int1 = (int1 + 2);
于 2012-12-12T15:38:27.960 回答