Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.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 Openmp减少循环错误?_C_Openmp_Reduction - Fatal编程技术网

C Openmp减少循环错误?

C Openmp减少循环错误?,c,openmp,reduction,C,Openmp,Reduction,这是代码的测试部分: float a = 0; float b = 0; int c = 0; int d = 0; #pragma omp parallel for schedule (dynamic, 1) reduction(+ : a, b, c, d) for(i=0; i<100; i++) { a +=1; b +=1; c +=1; d +=1; }

这是代码的测试部分:

    float a = 0;
    float b = 0;
    int c = 0;
    int d = 0;
    #pragma omp parallel for schedule (dynamic, 1)  reduction(+ : a, b, c, d)
    for(i=0; i<100; i++) {
        a +=1;
        b +=1;
        c +=1;
        d +=1;
    }

    printf("a: %d, b: %d, c: %d, d: %d\n", a, b, c, d);

为什么a、b、c、d都不等于100?

您正在使用
%d
格式打印浮点数。这会导致未定义的行为。使用:

   printf("a: %f, b: %f, c: %d, d: %d\n", a, b, c, d);

你会看到你得到了正确的答案。

没问题,很乐意帮忙。
   printf("a: %f, b: %f, c: %d, d: %d\n", a, b, c, d);