NekoC

猫でもわかるC言語の個人的なまとめ資料

View on GitHub

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
続行するには何かキーを押してください . . .

条件演算子

サンプルコード


#include <stdio.h>
#include <stdlib.h>

int main()
{
	(3 > 5) ? printf("3は5より大きい\n") : printf("3は5より大きくない\n");
	system("pause");

	return 0;
}

出力結果


3は5より大きくない
続行するには何かキーを押してください . . .