Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語の演算子とパンクチュエータ(区切り子)とは?違いと一覧をわかりやすく解説

演算子(Operator)とは

C言語における演算子とは、1つまたは複数のオブジェクトに対して適用される操作を表すための記号です。主に式の中で意味を持ちますが、宣言の中でも使用されることがあります。一般的には、英数字以外の文字を組み合わせた短い記号列として表現されます。

例えば、加算を表す「+」、等価比較を行う「==」、論理ANDを表す「&&」などが演算子に該当します。

パンクチュエータ(Punctuator)とは

パンクチュエータ(区切り子)とは、要素のリストを区切ったり、構文上の区切りを終了させたりするために使用される記号です。セミコロン「;」やカンマ「,」などが代表的な例です。

C言語の演算子・パンクチュエータ一覧

C言語で定義されている演算子およびパンクチュエータは、以下の通りです。

...   &&   -=   >=   ~   +   ;   ]

<<=   &=   ->   >>   %   ,   <   ^
>>=   *=   /=   ^=   &   -   =   {
!=    ++   <<   |=   (   .   >   |
%=    +=   <=   ||   )   /   ?   }
##    --   ==   !    *   :   [   #

演算子とパンクチュエータの両方として使われる記号

注意すべき点として、「*」「=」「:」「#」「,」などの一部の記号列は、演算子としてもパンクチュエータとしても使用されます。文脈によって役割が変わるため、コードを読む際はその使われ方に注目することが重要です。

ペアで使用する必要があるパンクチュエータ

「( )」「[ ]」「{ }」のように、いくつかのパンクチュエータは必ずペアで使用しなければなりません。開き括弧と閉じ括弧が対応することで、関数の引数リストや配列の添字、ブロックの範囲などが明確に定義されます。

コンパイラの「最長一致」ルールに注意

ソースコードを解析する際、コンパイラはトークンとして可能な限り長い記号列を作ろうとします(最長一致の原則)。このため、a+++++b のようなコードを解析すると、コンパイラは次のように解釈します。

a ++ ++ + b → 有効な構文ではない

一方で、次のような解釈は行われません。

a ++ + ++ b → こちらなら有効になり得る

このように、コンパイラは常に最長のトークンを優先するため、プログラマの意図と異なる解析結果になることがあります。可読性と正確性を保つためにも、空白や括弧を適切に挿入し、曖昧さのないコードを書くことを心がけましょう。

  1. C言語の演算子と式の種類を徹底解説!算術からビット演算まで

    C言語における演算子(オペレーター)とは、データに対して何らかの操作を行うための記号です。C言語の演算子は、その機能によって以下のように分類されます。算術演算子関係演算子論理演算子代入演算子インクリメント・デクリメント演算子ビット演算子条件演算子特殊演算子それぞれの演算子について、具体例とサンプルプログラムを交えながら詳しく見ていきましょう。1. 算術演算子算術演算子は、足し算や引き算などの数値計算を行うために使われます。演算子説明例a=20, b=10 の場合結果+加算(足し算)a+b20+1030-減算(引き算)a-b20-1010*乗算(掛け算)a*b20*10200/除算(割り算)a/

  2. Pythonで++や--演算子はどう動く?インクリメントができない理由と正しい代替方法

    Pythonには++や--という演算子は存在しないC/C++やJavaなどの言語では、++と--はそれぞれ「1を加える」「1を引く」ためのインクリメント・デクリメント演算子として定義されています。しかし、Pythonではこれらは演算子として定義されていません。その理由はPythonの設計思想にあります。Pythonではすべてのオブジェクトがメモリ上に格納され、変数はそのオブジェクトを指す「名前(ラベル)」にすぎません。さらに、数値オブジェクトはイミュータブル(不変)であるため、後から値を直接書き換えることができません。このため、C言語スタイルのa++のような演算子は採用されていないのです。前置