1

プログラムでそのコードフラグメントを見つけました

   {
      Aux_U16 =  16;

   }

問題は、なぜこの中括弧があるのか​​ということです。if や switch のようなキーワードは表示されません。

では、プログラミング言語 C で、キーワードなしで記述されている場合、どの関数に中括弧がありますか?

4

3 に答える 3

0

通常、それらは変数のスコープを制限するために使用されますが、あなたの例でAux_U16 = 16;は新しい変数は定義されていないため、という名前の既存の変数が必要でありAux_16、ブロックの終わりを超えて、それはどんな値でも持ち続けますブロック内で最後に設定されました。

iスコープを制限すると、たとえば、そのブロックの外側の状態について考える必要なく、という名前の新しい変数を作成できます。i残念ながら、あなたが示した例のように、コンパイラは定義の違いに気付かないでしょう。代入すると、保護していると思っていた変数が破損する可能性があります。

そのように物事を見つけるもう1つの一般的な理由は、単純にカットアンドペーストです. このような独立したブロックには何も問題はなく、残り物を削除するのを忘れている人もいます。または、コードを編集して立ち去るまで、一時変数がそこにあった可能性があります。または、ブロック内のコードが一緒に属していることを自分自身へのメモとして意味する場合もあります。

于 2013-08-19T11:02:35.817 に答える