2014-11-23 14 views
-5

有什麼方法可以確定一個變量是否小於0而不使用if語句?確定一個變量是否小於0,如果沒有語句

是的這確實是一個很奇怪的問題,但我仍然想知道。

+6

肯定。 'x <0'。沒有'如果'在視線。 – Fanael 2014-11-23 15:43:57

+0

'bool b = x <0;' – juanchopanza 2014-11-23 15:44:02

+4

只需使用'if'語句。這就是爲什麼它在那裏。 – 2014-11-23 15:45:47

回答

9

似乎有一個根本的誤解。

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(); 
相關問題