似乎存在一个根本性的误解.
if本身不进行任何比较; 它只是根据布尔表达式的值运行一个分支或另一个分支,例如x<0.现在,由于C++富含其他条件结构并且可以使用布尔表达式作为索引,因此您始终可以在许多方面利用实际进行比较的表达式:
switch(x<0)
{
case true:
std::cout<<"x < 0\n";
break;
default:
std::cout<<"x >= 0\n";
}
std::cout<<(x<0?"x < 0":"x >= 0")<<"\n";
const char *sign[]={">=", "<"};
std::cout<<"x "<<sign[x<0]<<" 0\n";
x<0 && puts("x<0");
x<0 || puts("x>=0");
while(x<0)
{
std::cout<<"x<0\n";
break;
}
while(!(x<0))
{
std::cout<<"x>=0\n";
break;
}
/* ... */
void l() { puts("x<0");}
void g() { puts("x>=0");}
/* ... */
void (*fns[])={g, l};
fns[x<0]();
/* ... */
struct B {
virtual void doIt()=0;
}
struct D1 : B {
void doIt() { std::cout<<"x<0\n"; }
}
struct D2 : B {
void doIt() { std::cout<<"x>=0\n"; }
}
D2 d2; D1 d1;
B *arr[] = {&d2, &d1};
arr[x<0]->doIt();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |