【问题标题】:how can i get rid of: warning: value computed is not used [-Wunused-value]我该如何摆脱:警告:未使用计算的值 [-Wunused-value]
【发布时间】:2013-11-28 14:01:26
【问题描述】:

我是编程初学者,所以我想要一个简单的答案:)

我有一个带有多个条件的 for 循环,它打印出两个数组。它有效,但我在 for() 下收到警告和红线。为什么会这样,我该如何避免呢?我正在用 C 语言编写它,并在 Ubuntu 中使用 Geany 编译器。 :)

for((i=LEN-1) && (j=1); (i>=LEN-3) && (j<=PODIUM); i-- && j++)  
{       
  printf("%d. koht: %s tulemusega %f\n", j, voist[i], tul[i]);      
}

【问题讨论】:

  • 您需要将(i=LEN-1) &amp;&amp; (j=1) 更改为i=LEN-1,j=1 和i-- &amp;&amp; j++ 更改为i--,j++

标签: c ubuntu geany


【解决方案1】:
for(i=LEN-1,j=1 ; (i>=LEN-3) && (j<=PODIUM); i--, j++) 

编辑: 它之所以有效,是因为这是正确的语法。您不需要使用 and 运算符来组合两个初始化或两个增量。你可以使用,

【讨论】:

  • 此解决方案有效。但为什么它会起作用?你可以解释吗? :)
  • 编译器将布尔结果存储在内部的某个临时变量中,该变量从未使用过。当我们删除第一个、最后一个参数的布尔条件时,它的目的就解决了!
【解决方案2】:

这个警告是因为(i=LEN-1) &amp;&amp; (j=1)的返回值被bot进一步使用。为了避免警告,试试这个

int temp;
... 

temp = (i=LEN-1) && (j=1);

for(; (i>=LEN-3) && (j<=PODIUM); i-- && j++)  
{  

     ....

     temp = (i=LEN-1) && (j=1);
} 

【讨论】:

  • 不幸的是,这只是添加了另一个警告:) 变量临时设置但未使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
相关资源
最近更新 更多