这个C行为叫什么
我正在学习 C 作为 Javascript 开发人员,我犯的一个常见错误是我应该像这样在 C 中定义多个变量
int a, b, c;
a = b = c = 0;
我不小心用 Javascript 的方式做的
a,b,c = 0;
a,b,c = 0;
我想知道上面叫什么,什么时候应该定义这样的变量。
回答
我想知道上面的叫什么....
关于这个声明的两件事
首先,这与
a;
b;
c = 0;
表达式a;和b;结果未使用。
编译器必须在此语句上抛出警告消息。当我用clang编译器编译时,我收到以下警告:
p.c:6:2: warning: expression result unused [-Wunused-value]
a, b, c = 9;
^
p.c:6:5: warning: expression result unused [-Wunused-value]
a, b, c = 9;
^
和二中,,在语句是,(逗号)运算符。
准确地说,逗号运算符在一般表达式中的含义
e1 , e2
对子表达式求值e1并丢弃结果,然后求值e2;表达式的值是 的值e2。
因此,表达式a,b,c = 0的值是 的值c = 0。变量a和b将保持未初始化状态。
你可以试试这个并检查这个语句后的变量值:
a = 99, b = 5, c = 0;
由于您正在学习 C,让我再告诉您一件事 - ,(逗号)在函数调用和定义、变量声明、枚举声明和类似构造中充当分隔符。首先,检查这个。
什么时候我应该定义这样的变量。
该语句a,b,c = 0;不是变量a,b和 的定义c。您已经定义的变量a,b并c在这里
int a, b, c;
请注意,在此语句中,,is 充当分隔符。
只要您非常了解它,它的使用完全取决于您。,(逗号)运算符的最常见用途之一是在for循环中,它可用于初始化多个变量和/或递增/递减循环计数器变量和其他变量等,例如:
for (i = 0, j = some_num; i < some_num; ++i, --j) ....