警告:逗号表达式的右侧操作数在C中无效[-Wunused value]

警告:逗号表达式的右侧操作数在C中无效[-Wunused value],c,gcc,comma-operator,C,Gcc,Comma Operator,gcc发出警告: 日志:- 警告:逗号表达式的右侧操作数无效[-Wunused value] 对于(i=4,数据;i 仅供参考,数据为int类型,我们将其传递给具有此forloop的函数 我尝试在本地使用运行良好的示例c代码。不确定我需要在原始代码中更改什么 #include <stdio.h> int main (){ int i; int data; for (i=4, data; i<10; ++i){ printf("i valuse is %d", i); } #包

gcc发出警告:

日志:- 警告:逗号表达式的右侧操作数无效[-Wunused value] 对于(i=4,数据;i 仅供参考,数据为int类型,我们将其传递给具有此forloop的函数

我尝试在本地使用运行良好的示例c代码。不确定我需要在原始代码中更改什么

#include <stdio.h>
int main (){
int i;
int data;
for (i=4, data; i<10; ++i){
printf("i valuse is %d", i);
}
#包括
int main(){
int i;
int数据;

对于(i=4,数据;i它的包含实际上是非常有害的

data
是一个具有值
data
的表达式,因为它是利用表达式分隔符运算符的外部表达式中的最后一个表达式,所以该外部表达式具有值
data
。严格地说,它的存在意味着程序的行为是未定义的,因为它不是init至少在概念上,编译器可以自由地生成读取值的代码

因为它没有任何有用的效果,所以有用的编译器会告诉您,您应该删除它

逗号表达式的右操作数无效

警告非常清楚。逗号运算符的出现在

  for (i=10, data; i<10; ++i)
           ^^^^^^

用于(i=10,data;iSo此代码打印什么?您正在计算未初始化且未使用的变量
data
。这就是编译器警告您的…这对代码没有影响,您可以将其删除。
i=10,data
计算
i=10
并计算
data
。计算
数据的结果
被丢弃。您试图对表达式
i=10,data
执行什么操作?…它将不准确地检查上次计算的表达式。不确定“检查”是什么意思在此上下文中,
e1,e2,…,en
的结果是
en
的值。但是在
for
循环中,不使用第一个表达式的结果。
for
语句只计算表达式的副作用,在这种情况下,它来自
i=10
。为什么要执行
i=10,data
?什么是t原因是什么?也许你应该阅读?代码更新(你应该通过编辑问题而不是添加注释来应用)根本不会改变上面的任何注释。你需要回去仔细阅读并理解它们。