> 2000/11/29 (水) 02:49:22 ◆ ▼ ◇ [mirai]> > 駄目だった
> > ヘルプでもなんて引いて良いのか
> > and だとビット演算にしか使えないそうだし
> ifでひいたらどうよ?
if 文には,if...then と if...then...else の 2 つの形があります。if...then 文の構文を次に示します。
if 式 then 文
式は論理値を返します。式が True である場合は文が実行され,
それ以外の場合は実行されません。例を示します。
if J <> 0 then Result := I/J;
if...then...else 文の構文を次に示します。
if 式 then 文1 else 文2
式は論理値を返します。式が True である場合は文1 が実行され,
それ以外の場合は文2 が実行されます。例を示します。
if J = 0 then
Exit
else
Result := I/J;
then 節と else 節にはそれぞれ 1 つの文が含まれますが,
これらの文には構造化文も使用できます。例を示します。
if J <> 0 then
begin
Result := I/J;
Count := Count + 1;
end
else if Count = Last then
Done := True
else
Exit;
then 節と else の間にはセミコロンを使用しないことに注意してください。
if 文全体の後にセミコロンを使用してブロック内の次の文から区切ることは
できます。しかし,then 節と else 節の間にはスペースまたは改行以外は何
も必要としません。if 文で else の直前にセミコロンを使用するのは,よくあるプログラミングエラーです。
ネストした if 文に関して特殊な問題が発生する場合があります。この問題の
原因は,if 文に else 節があるものとないものがあり,しかもこれらの 2 種
類の文の構文が else 節の有無を除いて同じであることです。一連のネストした条件文で else 節が if
文よりも少ない場合は,どの else 節がどの if に結びつくのかが明らかで
ない場合があります。たとえば次のような文があるとします。
if 式1 then if 式2 then 文1 else 文2;
この文は,次の 2 通りの方法で解析できます。
if 式1 then [ if 式2 then 文1 else 文2 ];
if 式1 then [ if 式2 then 文1 ] else 文2;
コンパイラは常に 1 番目の方法で解釈します。次に実際のコードで記述します。
if ...{ 式1 } then
if ...{ 式2 } then
... { 文1 }
else
... { 文2 } ;
これは次と同じです。
if ... { expression1 } then
begin
if ... { expression2 } then
... { 文1 }
else
... { 文2 }
end;
ネストした条件文の解析はもっとも内側の条件文から行われ,else はすべて
左側のもっとも近い if に結び付けられます。この例を 2 番目の方法でコン
パイラに解釈させるには,次のように明示的に記述する必要があります。
if ...{ 式1 } then
begin
if ...{ 式2 } then
... { 文1 }
end
else
... { 文2 } ;
これは&&に相当するものは無いってことだろうか・・
参考:2000/11/29(水)02時43分26秒