?:操作符是一个条件赋值的操作符号,常用来对变量进行条件赋值如:
int i = 1, j = 2;
int c_max = ( i > j ? i : j );
不过今天看了网上的一段代码,是这样用的
(i->second.left ? file.leechers : file.seeders)--;
上面的三个都是变量,也可以编译通过,所以写了段代码试了一下
1 void show_1(int val)
2 {
3 cout << "function show_1 called!" << endl;
4 }
5
6
7 void show_2(int val)
8 {
9 cout << "function show_2 called!" << endl;
10 }
11
12
13 void quest_test()
14 {
15 int c = 0;
16 int a = 1, b = 2;
17 (c++ ? a : b)--;
18 cout << a << " and " << b << endl;
19 (c ? a : b)++;
20 cout << a << " and " << b << endl;
21 (c ? show_1 : show_2)(100);
22 }
23
24
25 最后的输出是
26 1 and 1
27 2 and 1
28 function show_1 called!
最怪的是?:操作符号,居然也可以用在函数上.
(c ? show_1 : show_2)(100);
其实等同于
if (c)
show_1(100);
else
show_2(100);
不过简练了很多.