Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 代码可以编译但不起作用!cmd窗口只是一个又一个理想的窗口,但什么都没有发生_C++_C - Fatal编程技术网

C++ 代码可以编译但不起作用!cmd窗口只是一个又一个理想的窗口,但什么都没有发生

C++ 代码可以编译但不起作用!cmd窗口只是一个又一个理想的窗口,但什么都没有发生,c++,c,C++,C,问题是使用函数来评估Sinx系列。代码编译成功,但不起作用,甚至没有运行 #include <stdio.h> #include <math.h> void sine(int, float *); void factorial(int, int *); int main() { int x, fact; float sol; scanf("%d", &x); sine(x, &sol); printf("Soluti

问题是使用函数来评估Sinx系列。代码编译成功,但不起作用,甚至没有运行

#include <stdio.h>
#include <math.h>
void sine(int, float *);
void factorial(int, int *);
int main()
{
    int x, fact;
    float sol;
    scanf("%d", &x);
    sine(x, &sol);
    printf("Solution of Sin(x) series is %f.", sol);
    return 0;
}
void sine(int x, float *sol)
{
    int i;
    int fact=1;
    factorial(x, &fact);
    for (i=3;i>0;i+=2)
        *sol=x+pow(-1, i)*pow(x, i)/fact;
}
void factorial(int x, int *fact)
{
    int j;
    for (j=1;j<=x;j++)
        *fact*=j;
}
正弦函数中的for循环似乎不正确。您正在检查i>0,但您将其初始化为3,并以2的步长递增。只有当i溢出时,该循环才可能被打破,但这是未定义的行为,请参见。

正弦函数中的for循环似乎不正确。您正在检查i>0,但您将其初始化为3,并以2的步长递增。只有当我溢出时,这个循环才可能被打破,但这是未定义的行为,请参见。

void sine中的循环是无限的。你有错误的终止条件

for (i=3;i<=0;i+=2) {...}
无效正弦中的循环是无限的。你有错误的终止条件

for (i=3;i<=0;i+=2) {...}

该循环适用于i=3;i> 0;i+=2将永远运行。除非整数溢出将i变为负值。1否则代码编译成功但不工作,甚至不会运行。代码编译并不能保证它能正常工作。假设你写了一篇文章:编译器所做的只是检查它的语法是否正确。它没有检查任何东西是否有意义。2您是否尝试过使用调试器逐行地检查代码,同时在每个执行步骤中观察所有变量的值,以查看在哪个确切点,执行不符合您的期望?我认为您的意思是空闲而不是理想。@AdrianMole即使整数溢出可能导致负循环,也可能有无限循环。@AdrianMole整数溢出是未定义的行为!我想补充一点:有符号整数溢出是未定义的行为。定义了无符号整数溢出。此循环用于i=3;i> 0;i+=2将永远运行。除非整数溢出将i变为负值。1否则代码编译成功但不工作,甚至不会运行。代码编译并不能保证它能正常工作。假设你写了一篇文章:编译器所做的只是检查它的语法是否正确。它没有检查任何东西是否有意义。2您是否尝试过使用调试器逐行地检查代码,同时在每个执行步骤中观察所有变量的值,以查看在哪个确切点,执行不符合您的期望?我认为您的意思是空闲而不是理想。@AdrianMole即使整数溢出可能导致负循环,也可能有无限循环。@AdrianMole整数溢出是未定义的行为!我想补充一点:有符号整数溢出是未定义的行为。定义了无符号整数溢出。您如何确定它是无限的?我最终将溢出,从而导致未定义的行为。您的新条件将永远不会执行循环。@SaucyGoat一旦溢出,其值将为负值,从而打破循环。溢出有符号整数是未定义的行为。因此,不能保证它会溢出为负数。@AlgirdasPreidžius我更正了我的评论,但感谢您指出这一点!是 啊也许你是对的,也许不是。然而,这个循环中存在错误。你如何确定它是无限的?我最终将溢出,从而导致未定义的行为。您的新条件将永远不会执行循环。@SaucyGoat一旦溢出,其值将为负值,从而打破循环。溢出有符号整数是未定义的行为。因此,不能保证它会溢出为负数。@AlgirdasPreidžius我更正了我的评论,但感谢您指出这一点!是 啊也许你是对的,也许不是。尽管如此,这个循环还是有错误。@ChetanPaliwal出于好奇,正确的循环语句是什么?@ChetanPaliwal出于好奇,正确的循环语句是什么?