= 右辺の値を左辺の変数に代入する。
- 多重代入も許される。複数の変数に共通の値を代入する。
a=b=c=1+2; const int c=123;
- 中間代入
c=(x=a+b)*(y=a-b)ただし、次はいずれも代入できず、コンパイルエラーとなる。
10=20; (a=10)=20;
論理積 & a&b
論理和 | a|b
排他的論理和 ^ a^b
左シフト << a<<b 空いたビットには0が埋められる。例:c=a<<4;
右シフト >> a>>b 空いたビットには符号付きの場合、その符号、符号なしの場合は0が埋められる。
補数演算子 ~ ~a(各ビットを反転する。1の補数)
ビット演算子のオペランドは汎用数型に拡張され、演算結果は汎整数が拡張された後の型である。
論理和 | a|b
排他的論理和 ^ a^b
左シフト << a<<b 空いたビットには0が埋められる。例:c=a<<4;
右シフト >> a>>b 空いたビットには符号付きの場合、その符号、符号なしの場合は0が埋められる。
補数演算子 ~ ~a(各ビットを反転する。1の補数)
ビット演算子のオペランドは汎用数型に拡張され、演算結果は汎整数が拡張された後の型である。
b=a++; まず左辺に代入してからインクリメント b=a; a=a+1;
b=++a; まずインクリメントしてから左辺に代入 a=a+1; b=a;
(同位の演算子は左から順に評価される、と覚えればよい。)
b=a--; b=--a; も同様。
ただし、単独で使われる場合には、a++でも++aでも同じ。for文ではしばしば使われる。
b=++a; まずインクリメントしてから左辺に代入 a=a+1; b=a;
(同位の演算子は左から順に評価される、と覚えればよい。)
b=a--; b=--a; も同様。
ただし、単独で使われる場合には、a++でも++aでも同じ。for文ではしばしば使われる。
(式1, 式2, ・・・); 各式を評価(実行)するが、最後の式の評価結果が式全体の値となる。
例1:int i,j,k;
例2:i=0; j=1; k=2; は、i=0; j=1; k=2; と等価。
例3:i=3; j=4;
j=(i++, j%3);
cout << "i= " << i ", j= " << j "\n;
for文、if文、関数の仮引数の中で使用される。
例1:int i,j,k;
例2:i=0; j=1; k=2; は、i=0; j=1; k=2; と等価。
例3:i=3; j=4;
j=(i++, j%3);
cout << "i= " << i ", j= " << j "\n;
for文、if文、関数の仮引数の中で使用される。
- (Expression)? value1 : value2
- Expressionが真であれば、value1、偽であればvalue2を返す。条件演算子。
min = x<y ? x : y ;
- (1)代入、初期化時
- 左辺の方と右辺の型が異なっている場合は、左辺の方に変換する。
int a; double x=3.1415; a=x; → aは3となる。 - (2)式の中(混合演算)
- データ型の異なった変数・定数の演算
データ型のランクは、データ長が大きいほど上。
char<short<int<long<float<double<long double
演算結果は、その式において最もランクの高いデータ型になる。
10.0/4.0*2.0 各定数は浮動小数点として解釈
10 / 4 * 2 各定数は整数として解釈
コメントをかく