星期三, 4月 10, 2013

[程式筆記] switch & case 使用注意事項


寫過C語言的人都知道switch & case。
其中使用上有一點點小地方要注意,
假設有一段程式碼如下: 


switch(flag)
{
case 1:
switch(i2c_buf[0])
{
case 0x00:
rcv_ptr = PonString00A;
INTO=1;
break;
case 0x18:
rcv_ptr = PonString18A;
INTO=1;
break;
}
case 0:
switch(i2c_buf[0])
{
case 0xA6:
rcv_ptr = PonStringA6;
break;
case 0x00:
rcv_ptr = PonString00;
break;
case 0x18:
rcv_ptr = PonString18;
break;
}
default:
notLoad_rcv_ptr =1;
break;
}


這邊使用兩層switch& case來進行條件選擇,
但如果switch(flag)中的flag定義為bit,意即一開始宣告flag如下:

bit flag;

則會使switch在判別flag內容出現error。
也就是說,switch在判斷其需要判斷的變數時,
該變數不可為布林( boolean)變數(無法判斷真假關係)。

但如果改成以下:

unsigned char flag;

或者是

int flag;

等等之類的就可以進行switch判斷了!


沒有留言: