Image

PythonとC言語の演算子の違いを押さえよう!サンプルコードを用いて解説!

PythonとC言語の演算子の違いについて解説しました。PythonとC言語の演算子の違いについて学びましょう。演算子はプログラミングにおける基本的な計算を行うためのものです。でもPythonとC言語の演算子にそこまで差はなかったりします。

PythonとC言語の演算子について

今回はPythonとC言語の演算子について違いを押さえます

演算子と聞くと、「計算の時だけ必要なんでしょ?」と思うかも知れません。

しかし、実際のところ計算以外の処理でも演算子は普通に使用されます。

必ず押さえておくべき内容なので、しっかりとマスターしましょう。



目次

01. PythonとC言語の演算子とは

02. 代表的なPythonとC言語の演算子とは

03. PythonとC言語のビット演算子とは

04. Pythonの比較演算子とは

05. まとめ


01. PythonとC言語の演算子とは


端的に表現すると、演算を表した記号を演算子といいます。

加算や減算などの算術計算を行う演算子は算術演算子といいます。


02. 代表的なPythonとC言語の演算子とは



+ #加算
- #減算
* #乗算
/ #除算
% #剰余算
= #代入
+= #a+=b aにbを足した値をaに代入する
-= #a-=b aからbを引いた値をaに代入する
*= #a*=b aにbをかけた値をaに代入する
/= #a/=b aをbで割った値をaに代入する
%= #a%=b aをbで割った余りをaに代入する
a = a + b;
a += b;


この2つの式は同義です。

演算子には優先度が存在します。



a * b + c / d


通常の計算と同じように基本的には左側から行われ、*や/、()や{}が優先される点も変わりません

中学校程度の内容なので問題はないとは思いますが一応触れておきました。



a = b = c


この動きは少しわかりにくいと思います。

ここでは代入の意味を理解していないとaとbとcは同じなんだなと解釈してしまいがちです

しかし=の意味は代入であり、代入したいものを代入する入れ物に入れるイメージです

そのためbにcを代入してcが代入されたbをaに代入するという流れです



変数名 ++ または ++変数名
変数名 -- または --変数名


++をインクリメント演算子、ーーをデクリメント演算子と言います。

インクリメント演算子は変数に1を加えます

デクリメント演算子は変数から1を引きます



(データ型) 変数または定数


データ型を一時的に変換する演算子を型変換演算子、またはキャスト演算子といい、()のなかに変換後のデータ型を入れて表します

つまり計算中に型を変換することができる演算子です。



下位 char → intfloat → double 上位


C言語では式の中に異なるデータ型が存在する場合は計算結果に上位のデータ型に変換されます


次にPythonの演算子についてC言語との違いを学んでいきます



## Python
+a #正数
-a #負数
a + b #加算
a - b #減算
a * b #乗算
a / b #除算
a % b #aをbで割った余り
a ** b #aのb乗
a // b #切り捨て除算
a = b #aにbを代入する
a += b #a = a + b
a -= b #a = a - b
a *= b #a = a * b
a /= b #a = a / b
a %= b #a = a % b
a **= b #a = a ** b
a //= b #a = a // b
a &= b #a = a & b
a |= b #a = a | b
a ^= b #a = a ^ b
a <<= b #a = a << b
a >>= b #a = a >> b


後半にビット演算子が入ってしまっていますが後に触れます。

Pythonで扱う代入演算子代数演算子はこのように使用します

代入演算子と代数演算子は主に計算に用います。


03. PythonとC言語のビット演算子



変数|変数


ここではビット演算を行うためのビット演算子について触れていきます。

ビットとは0や1のみで表された値をいいます

2進数のことです

0と1の並びをビット列といいます。

|はビット演算のORを表しています。



## C言語
#include <stdio.h>
int main(void)
{
int b = 0x20, c = 'A';
c = c|b;
printf("%c¥n", c);
return 0;
}

>>>a


大文字のAが小文字のaに変換されました。

ビット演算ではこのような変換を行うことができます。

Aの文字コードは0x41aの文字コードは0x61です。

bには0x20を代入しています。このことからわかることは、ORは加算に近い処理です。

同じ要素はそのまま残してどちらかにあるものを組み合わせて両方を満たす値を生成します

2進数を論理演算しています。

ちなみに文字コードは2進数で表現されています。



変数&変数


ANDを意味します。

ANDは両方に共存する要素を残します

もし仮にa&b変数a01b10なら演算結果00です



変数 << n
変数 >> n


 これはビットをシフトする演算子です



c << 4


符号ありでも符号なしでも4つ分左にずらしずれたところには0を補充します

変数の負の場合1が補充されます



˜ 変数


これはビットの1を0にして0を1にします



変数 ˆ 変数


ビットごとの排他的ORを取る演算子です



#include <stdio.h>
int main(void)
{
int b = 0x20, c = 'A';
c = cˆb;
printf("%c¥n", c);
return 0;
}

>>>a


Pythonのビット演算子について触れていきましょう



~a #ビット反転
a & b #AND:論理積(aもbも1のビットが1)
a | b #OR:論理和(aまたはbが1のビットが1)
a ^ b #XOR:排他的論理和(aまたはbが1のビットが1)
a << b #bビット左シフト
a >> b #bビット右シフト


根本的な意味合いはC言語と同じです

Pythonはデータをビット型で考えることはあまりないような気がします。

根本的な原理としてビット型で考えることがあるのでイメージできるようにしておくといいと思います。


04. Pythonの比較演算子とは


Pythonの比較演算子についてC言語との違いを学んでいきましょう



a == b #aがbと等しい
a != b #aがbと異なる
a < b #aがbよりも小さい
a > b #aがbよりも大きい
a <= b #aがb以下である
a >= b #aがb以上である
a is b #aがbと等しい
a is not b #aがbと異なる
a in b #aがbに含まれる(a,bは共に文字列または、bはリストやタプル)
a not in b #aがbに含まれない(a,bは共に文字列または、bはリストやタプル)


ここで挙げている演算子は基本的な論理演算を可能とする簡単な演算子です。

次はPythonのブール演算子です

ブール演算子は論理的な処理を可能とします



a and b #aもbも真であれば真
a or b #aまたはbが真であれば真
not a #aが偽であれば真


次はPythonの条件演算子についてです



x if c else y


xがcであればxを返しさもなければyを返します


最後に文字列演算について学習しましょう



a + b #文字列aと文字列bを連結します
a * n #文字列aをn回繰り返します
a[n] #文字列aの中のn番目の文字を取り出します
a[n:m] #文字列aの中のn番目からm番目までの文字列を取り出します
a[n:] #文字列aの中のn番目から最後までの文字列を取り出します
a[:m] #文字列aの中の0番目からm番目までの文字列を取り出します
a[n:m:s] #文字列aの中のn番目からm番目までの文字列をs個とばしで取り出します


これは文字列に対して行うことができる演算です。

ちなみに文字列でもなんでもプログラミングの世界では0から数えていきます


04. まとめ


お疲れ様でした。

ここまで読んでいただきありがとうございます。

今回の学習で演算子は網羅しています。

よく使うのはPythonであれば比較演算子やブール演算子を使うと思います。

Pythonの部分はとほほさんを参考にさせていただいています。