Closed. This question is not reproducible or was caused by typos。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

5年前关闭。



Improve this question




我必须打印一棵圣诞树,这是树干的代码:”
#include <stdio.h>
#include <math.h>

int main () {

    int j;
    int cspaziodx,cspaziosx,cltroncoo;
    float cltronco,larghezza;

    printf ("ins larghezza");
    scanf ("%f",&larghezza);

    for (j=1;j<=(ceil(larghezza/10));j++) {

    cltronco = roundf(larghezza/4);
    cltroncoo = cltronco;
    if (cltroncoo%2==0) {(cltroncoo == cltroncoo + 1);}
    cspaziodx = ((larghezza - cltroncoo)/2);
    cspaziosx = ((larghezza -  cltroncoo)/2);

            while (cspaziodx > 0)
                {
                printf(" ");
                cspaziodx = cspaziodx - 1;
                }
                while (cltroncoo > 0)
                    {
                    printf ("|");
                    cltroncoo = cltroncoo - 1;
                    }

                    while (cspaziodx > 0)
                        {
                        printf(" ");
                        cspaziosx = cspaziosx - 1;
                        }

    printf ("\n");

    }

    return 0;
    }



错误是在这行if (cltroncoo%2==0) {(cltroncoo == cltroncoo + 1);}为什么不起作用?

最佳答案

问题出在

(cltroncoo == cltroncoo + 1)

使用比较运算符==。也许你的意思是
(cltroncoo = cltroncoo + 1)

在这里我们使用赋值运算符=

为了更加清楚起见,根据==规范第6.5.9章,对于等于运算符C11



现在,就您而言,您错过了使用结果的机会,因此您的编译器发出了尖叫。

同样,FWIW应该使用int main ()而不是int main (void)

09-12 09:40