線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1126
推到 Plurk!
推到 Facebook!

if...else區間

答題得分者是:justdo
Smallcat7315
一般會員


發表:19
回覆:22
積分:7
註冊:2005-05-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-04 18:43:21 IP:218.168.xxx.xxx 未訂閱
請問一下大家: if (a>60) { if (b>50) printf("good"); else printf("not good"); } 為何此{}區間符號可有可無呢??
IORIS
一般會員


發表:15
回覆:21
積分:7
註冊:2005-01-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-04 19:10:07 IP:140.135.xxx.xxx 未訂閱
不好意思我看不太懂你的問題
if (b>50)
    {printf("good");}  
else
    {printf("not good");}
你是指 爲什麼 上面的{}都可以省略嗎? 如果是這個問題的話 一般來說if else 之後若沒有{} 程式會把第一個分號 當成結束點 而且一般來說 若if else 之後如果只要執行一個動作 也就是只有一行程式 就可以直接省略{} 若今天 你的程式變成
if (b>50)
{
     printf("good");
     printf("very good");
}  
else
{
     printf("not good");
     printf("so bad");
}
此時{}就一定得加不可省略 這是我的想法拉 不知道是不是你要問的 發表人 - ioris 於 2005/10/04 19:14:40
Smallcat7315
一般會員


發表:19
回覆:22
積分:7
註冊:2005-05-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-04 19:40:17 IP:218.168.xxx.xxx 未訂閱
引言: 不好意思我看不太懂你的問題
if (b>50)
    {printf("good");}  
else
    {printf("not good");}
你是指 爲什麼 上面的{}都可以省略嗎? 如果是這個問題的話 一般來說if else 之後若沒有{} 程式會把第一個分號 當成結束點 而且一般來說 若if else 之後如果只要執行一個動作 也就是只有一行程式 就可以直接省略{} 若今天 你的程式變成
if (b>50)
{
     printf("good");
     printf("very good");
}  
else
{
     printf("not good");
     printf("so bad");
}
此時{}就一定得加不可省略 這是我的想法拉 不知道是不是你要問的 發表人 - ioris 於 2005/10/04 19:14:40
我的意思就是 原來 if (a>60) { if (b>50) printf("good"); else printf("not good"); } 也可是 if (a>60) if (b>50) printf("good"); else printf("not good"); 結果一樣 且else是與他最近的if為一組 看起來好怪 為啥可以 >.<
IORIS
一般會員


發表:15
回覆:21
積分:7
註冊:2005-01-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-04 19:50:59 IP:140.135.xxx.xxx 未訂閱
假如是另一個情況 你是指
if (a>60)
{
  if (b>50)
      printf("good");
  else
      printf("not good");
}
這個{}省略的話 會有錯誤喔 輸出結果會變成 a>60 b>50對 a<60 b>50錯 a>60 b<50 對 a<60 b<50 錯 因為程式碼變成
if (a>60)
    if (b>50)
        printf("good");
else
    printf("not good");
也就是說else會變成是第一個if 的 else 目前手邊電腦沒有程式可以跑 是直接用 推測的...結果不知道有沒有出入 不知這樣能解決你的問題嗎? 發表人 - ioris 於 2005/10/04 20:01:32
Smallcat7315
一般會員


發表:19
回覆:22
積分:7
註冊:2005-05-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-04 20:04:25 IP:218.168.xxx.xxx 未訂閱
引言: 假如是另一個情況 你是指
if (a>60)
{
  if (b>50)
      printf("good");
  else
      printf("not good");
}
這個{}省略的話 會有錯誤喔 輸出結果會變成 a>60 b>50對 a<60 b>50錯 a>60 b<50 對 a<60 b<50 錯 因為程式碼變成
if (a>60)
    if (b>50)
        printf("good");
else
    printf("not good");
也就是說else會變成是第一個if 的 else 不知這樣能解決你的問題嗎?
if (a>60) { if (b>50) printf("good"); else printf("not good"); } 等於下面的 if (a>60) if (b>50) printf("good"); else printf("not good"); 為何有{}跟沒{}是一樣的 不知道大大回答的是不是我低疑問 搞混哩@@~!!! 發表人 - smallcat7315 於 2005/10/04 20:06:44
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-10-04 20:27:16 IP:221.169.xxx.xxx 未訂閱
IORIS 所言有誤..  else 會自動去對應最近的if 所以是
if (a>60)
    if (b>50)
        printf("good");
    else
        printf("not good");
而非
if (a>60)
    if (b>50)
        printf("good");
else
    printf("not good");
依照c的語法,if 後面如果只接一個指令,則{}可省略 所以
if (xxx)
{
  do_something;
}
等同
if (xxx)
  do_something;
而一個if的完整述句又剛好可視為一個指令,故上面的do_something可用另外一個if句子替代
if (xxx)
  if (yyy)
    do_anotherthing;
  else
    do_xxxthing;
這個就是你最原先問的情況了
IORIS
一般會員


發表:15
回覆:21
積分:7
註冊:2005-01-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-10-04 20:28:18 IP:140.135.xxx.xxx 未訂閱
不好意思 更正上一篇的說法 程式跑出來的結果是..對的  {}省略之後 else 會跟他最近的if 一組 也就是 
if (a>60)
      if (b>50)
           printf("good");
      else
           printf("not good");
不好意思 發表了錯誤的說法 真是汗顏阿 >"< 下次還是別隨便發言了好 ~"~ 不知道能不能把我前面PO的砍掉阿 真丟臉!! 發表人 - ioris 於 2005/10/04 20:36:04
Smallcat7315
一般會員


發表:19
回覆:22
積分:7
註冊:2005-05-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-10-04 20:35:23 IP:218.168.xxx.xxx 未訂閱
呵呵 謝謝大家的幫忙 大概有些了了
系統時間:2024-07-02 23:21:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!