我有以下代码行
int i = (i = 20);
Run Code Online (Sandbox Code Playgroud)
并且它将i的值设置为20.现在我的问题是,两个语句是否相同?
int a = 0;
int i = (a = 20);
Run Code Online (Sandbox Code Playgroud)
和
int a = 0;
int i = a = 20;
Run Code Online (Sandbox Code Playgroud)
这两个语句都将值设置为i = 20和a = 20.有什么不同?
如果它们是相同的那么为什么有等价值的大括号?
sll*_*sll 10
赋值运算符是右关联的,这意味着操作从右到左分组.例如,形式a = b = c的表达式被评估为a =(b = c).
是的,这两个是相同的 - 但我强烈反对你不要像这样初始化变量.我会多愿意看到:
int a = 0;
// Whatever the intervening code is
a = 20;
int i = a;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1031 次 |
| 最近记录: |