【问题标题】:Why do I get a warning: statement with no effect [-Wunused-value] [closed]为什么我会收到警告:声明无效 [-Wunused-value] [关闭]
【发布时间】:2015-12-20 17:43:26
【问题描述】:

我要打印一棵圣诞树,这是树干的代码:"

#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);} 为什么不工作?

【问题讨论】:

  • == 是比较,不是赋值;简单地比较两个值没有效果:-)

标签: c compiler-errors assignment-operator comparison-operators


【解决方案1】:

问题出在

(cltroncoo == cltroncoo + 1)

使用比较运算符==。也许你的意思是

(cltroncoo = cltroncoo + 1)

我们使用赋值运算符=

根据C11 规范,第 6.5.9 章,对于相等运算符 ==,只是为了增加一些清晰度,

[...] 如果 指定的关系为真,如果为假,则为 0。结果类型为int。对于任何一对 操作数,恰好其中一个关系为真。

现在,在您的情况下,您错过了使用 结果,因此您的编译器会尖叫。

另外,FWIW,至少应该使用int main (),而不是int main (void)

【讨论】:

    【解决方案2】:
     if (cltroncoo%2==0) {                        // comapre
         (cltroncoo == cltroncoo + 1);            // again compare ??
     }
    

    if 的正文中,您使用==只会比较两个值),也许您打算使用= 赋值运算符来更改多变的。

    (cltroncoo =cltroncoo + 1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多