C语言逗号表达式和赋值表达式
C语言逗号表达式和赋值表达式
笔试常考这个,没办法
#include <iostream>
using namespace std;
int main(int argc, char const* argv[]) {
int a = 0, b = 0, c = 0, d = 0;
// 1. 逗号表达式
/*
表达式1,表达式2,表达式3……表达式n;
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。
整个逗号表达式的值是表达式n的值。。
*/
a = 3 + 4, 4 * 5; // 7
b = (3 + 4, 4 * 5); // 20
cout << a << " " << b << endl;
// 2. 赋值表达式
// 就是赋值号最左边的值
d = (c = 3 + 4, c * 5); // c = 7, d = 35
cout << c << " " << d << endl;
c = a = b = 11; // c = 11
cout << c << endl;
if ((d = []() { return 5; }()) == 5) // 在if语句中利用赋值表达式,在STL中很常见
cout << "d == 5" << endl;
return 0;
}