意想不到的用法 if, for ,while, return 統整大全

CH1:if, for ,while, return 

前言:

如果你都懂那些指令怎麼用,但你還不知道特殊用法,你可以跳到最下面。
if, while,return 有共同特徵:都有特殊用法,至少要接1個參數,可接多個參數,最右邊的參數用來判斷,其他的只在判斷前執行

註:[]中括弧代表內容可有可無

語法:

>for()
先從常見的開始
語法:
for([state1];[cond1];[state2])
{
    [[content];]
}
執行順序:
state1->cond1->content->state2->cond1->content->... (repeatedlu)
執行迴圈時機:cond1=true 或甚麼都不打

>while()
語法:
while([state1,][state2,][...,][staten,]cond1)
{
    [[content];]
}
執行順序:
state1->state2->...->staten->cond1->content-> state1->state2->...->staten->cond1->content (repeatedly)
執行迴圈時機:cond1=true 


>do-while();
語法:
do
{
    [[content];]
}while([state1,][state2,][...,][staten,]cond1);
執行順序:
content->state1->state2->...->staten->cond1->content-> state1->state2->...->staten->cond1 (repeatedly)
執行迴圈時機:cond1=true 

>if()
語法:
if([state1,][state2,][...,][staten,]cond1)
{
    [[content];]
}

state1->state2->...->staten-.cond1->content(只執行一次)
執行迴圈時機:cond1=true 

return()
語法:
return ;
or
return n;
or 
return n<5;
or
return (n);
or
return n++,n;
or
return (n++,n);

陷阱三顆星1:

常見:(可以看下面範例)
1)do-while();後面一定要有分號
2)if(),for(),while(),do-while()後若沒有括弧,代表只有後面一組程式碼在迴圈內(範例0)
3)根據2)所以在do和while()中一定要有分號或括弧,如:do{} while(); or do ; while();
4)for()裡一定要有兩個分號,如:for(;;) (範例2A)
5)參數數量:for(;;):>=0 if(),while(),do-while():>=1 (範例3A,3B)
6)for(;cond1;)若cond1沒有寫則是要執行(範例2A,2B)
7)if會捨近求遠,意思是else 會與最近的if配對(範例1)

範例0:
if(n==45)k++;cout<<k;

as

if(n==45){k++;}cout<<k;

範例1:(重要,老師上課講過)
if(k==3)
    if(n==5) k++;
    else n=3;

as
   
if(k==3){
    if(n==5){ k++;}
    else {n=3;}
}


範例2A:
for():
for(;;)
{}

as

for(;true;)
{}

//NO:for(){}//complier error

範例2B:
while():
while(1){}

//NO:while() //compiler error:too few arguments

特殊用法:

最右邊的參數用來判斷,其他的只在判斷前執行

範例3A:
while(cin>>n ,n)
{
    cout<<n<<endl;
}
等於
cin>>n
while(n)
{
    cout<<n<<endl;
    cin>>n;
}
範例3B:
do
{
    cout<<n;
}while(cin>>n);

as

do
{
    cout<<n;
    cin>>n;
}while(1);

Comments