04_式と演算子3
補数演算子
~
: 各ビットを反転する。
サンプルプログラム
#include <stdio.h>
#include <stdlib.h>
int main(){
short _short = 10;
printf("_short =%08X(16進数)\n",_short);
printf("_short =%d(10進数)\n",_short);
printf("----------------------------\n");
printf("~_short =%08X\n",~_short);
printf("~_short =%d(10進数)\n",~_short);
system("pause");
return 0;
}
出力結果
_short =0000000A(16進数)
_short =10(10進数)
----------------------------
~_short =FFFFFFF5
~_short =-11(10進数)
続行するには何かキーを押してください . . .
シフト演算子
右シフト
128 = 10000000 右シフト↓ 1/2 64 = 01000000 右シフト↓ 1/2 32 = 00100000
左シフト
12 = 00001100 左シフト↓ ×2 24 = 00011000 左シフト↓ ×2 48 = 00110000
サンプルコード
#include <stdio.h>
#include <stdlib.h>
int main()
{
short _short1 = 10;
short _short2 = -50;
printf("_short1 = %d\n", _short1);
printf("_short1 >> 2 = %d\n", _short1 >> 2);
printf("_short1 << 2 = %d\n", _short1 << 2);
printf("-----------------------------------\n");
printf("_short2 = %d\n", _short2);
/* 左シフトした場合は下位ビットに0が入ってくる。*/
printf("_short2 >> 1 = %d\n", _short2 >> 1);
/* 右シフトした場合は上位ビットに符号ビットと同じビットが入ってくる。*/
printf("_short2 << 1 = %d\n", _short2 << 1);
system("pause");
return 0;
}
出力結果
_short1 = 10
_short1 >> 2 = 2
_short1 << 2 = 40
-----------------------------------
_short2 = -50
_short2 >> 1 = -25
_short2 << 1 = -100
続行するには何かキーを押してください . . .
条件演算子
- 条件演算子
- 3項演算子:
op1 ? op2 : op3
- op1が真であれば、op2が評価される。偽であればop3が評価される。
- 3項演算子:
サンプルコード
#include <stdio.h>
#include <stdlib.h>
int main()
{
(3 > 5) ? printf("3は5より大きい\n") : printf("3は5より大きくない\n");
system("pause");
return 0;
}
出力結果
3は5より大きくない
続行するには何かキーを押してください . . .