可能重复:
C++逗号运算符
我曾经看过C语言中的语句.像这样.
if (a, b, c, d) {
blablabla..
blablabla..
}
Run Code Online (Sandbox Code Playgroud)
这个if语句的含义是什么?
你在那里有一个逗号运算符的例子.它评估所有四个表达式,但d用于if语句.
除非d有副作用之外的表达(a++例如),否则它们是无用的.您可以使用迷你程序查看它:
#include <stdio.h>
int main (void) {
if (1,0) printf ("1,0\n");
if (0,1) printf ("0,1\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
哪个输出:
0,1
Run Code Online (Sandbox Code Playgroud)
大多数人在没有意识到的情况下使用它,如:
for (i = 0, j = 100; i < 10; i++, j--) ...
Run Code Online (Sandbox Code Playgroud)
的i = 0,j = 100,i++和j++是其中的每一个使用逗号操作者两个完整表达式的组分.
该标准的相关部分是C11 6.5.17 Comma operator:
句法:
expression:
assignment-expression
expression , assignment-expression语义:
逗号运算符的左操作数被计算为void表达式; 它的评估与右操作数之间存在一个序列点.然后评估右操作数; 结果有它的类型和价值.
例:
如语法所示,逗号运算符(如本子条款中所述)不能出现在使用逗号分隔列表中的项的上下文中(例如函数的参数或初始化列表).另一方面,它可以在括号内表达式中使用,也可以在这种上下文中的条件运算符的第二个表达式中使用.在函数调用中:
f(a, (t=3, t+2), c)该函数有三个参数,第二个参数的值为5.
| 归档时间: |
|
| 查看次数: |
9301 次 |
| 最近记录: |