我不小心删除了方法名称时遇到了这个问题.代码来自
bool bRet = MethodName(pData, pOutFilename);
Run Code Online (Sandbox Code Playgroud)
至
bool bRet = (pData, pOutFilename);
Run Code Online (Sandbox Code Playgroud)
但仍然编译?这段代码有什么作用?这是什么意思?它似乎返回true,总是这样(即使pData为null)?
欢迎任何想法!
Gri*_*han 17
您的表达式bool bRet = (pData, pOutFilename); 是一个有效的表达式,它等同于表达式bool bRet = pOutFilename;
在bool bRet = (pData, pOutFilename);,首先计算表达式pData,然后计算第二个表达式pOutFilename,然后分配第二个表达式的值bRet(这是,运算符从左到右的工作方式).
阅读:逗号运营商:,
逗号运算符
,有left-to-right associativity.用逗号分隔的两个表达式从左到右进行计算.始终评估左操作数,并在评估右操作数之前完成所有副作用.
要了解括号( )在表达式中的重要性,请考虑下面的示例.观察此示例中的输出(我有C示例):
int main () {
int i = 10, b = 20, c= 30;
i = b, c; // i = b
printf("%i\n", i);
i = (b, c); // i = c
printf("%i\n", i);
}
Run Code Online (Sandbox Code Playgroud)
输出:
20
30
Run Code Online (Sandbox Code Playgroud)
要理解输出:查看优先级表的 ,优先级低于=.在表达式中,您使用括号覆盖优先级.
| 归档时间: |
|
| 查看次数: |
1412 次 |
| 最近记录: |