#include<iostream>
using namespace std;
int main()
{
const char x[2][20]={"Jason"," at your service\n"};
const char *y=" Quillstone";
int i;
for(i=0;i<3;++i)
cout<<((i<2)?!i?x[i]:y:x[1]);
return 0;
}
程序的运行结果是
Jason Quillstne at your service
在这里?:的结合方式与if else的结合方式相似。
所以该程序的运行过程是
i=0时,!i?x[i]:y的结果为x[i],此时((i<2)?!i?x[i]:y:x[1])等价于(i<2)?x[i]:x[1];
i=1时,!i?x[i]:y的结果为y,此时((i<2)?!i?x[i]:y:x[1])等价于(i<2)?y:x[1];
i=2时,!i?x[i]:y的结果为y,此时((i<2)?!i?x[i]:y:x[1])等价于(i<2)?y:x[1];
此乃个人理解,仅供参考。