Programming」カテゴリーアーカイブ

プログラミング関連の話題。

インスタンス初期化子の存在意義が理解できました

Javaの機能として用意されているインスタンス初期化子とクラス初期化子について、クラス初期化子は用途がなんとなくわかった(他に代替がない機能)のですが、インスタンス初期化子はコンストラクタで良くないのかなあ、と思っていたのですが、無名クラスの定義の際に必要だということに気づきました。

確かに要るなぁと感心したのでメモしときます。

続きを読む

Linqが怖い

Linqって強力ですね。「こういう機能実装できないかな」って考えたときに、真っ先にSQLのDISTINCTが思い浮かびました。そこで、「LINQ使って楽に実装できないのか?」と考えつき、やってみました。

予想通りに動きすぎて、本当に怖いですよね。最近、マイコンプログラミングばかりやってるもので、書いてるとおりに動かないことなんて日常茶飯事なのです。実際のところは、書いてるとおりにしか動いてないわけですがそこには突っ込まないでくださいね。

では、単純にすげーと思ったソースコードを記しておきます。

続きを読む

C言語のビット演算の小言

ちょっとした小言というか、潔癖症だからこそ気になった点です。同級生のソースコードを眺めていて発見しました。

操作したいビットに1を立てた定数を用いるべき

ひとことで、このようになるでしょうか。ソースコードを見れば一発です。

main(){
	char a = 0x87;	/* 1000 0111 */
	
	a |= 0x48;		/* 0x00 x000 を1にしたい時 */
	
//	a &= 0x78;		/* x000 0xxx を0にしたい時はこう書かずに、 */
	a &= ~0x87;		/* こう書いて欲しい */
}

どのビットを操作する演算なのかを明確にするためにも、後者を使って欲しいものです。

C言語の小コメント中コメント大コメント

#include <stdio.h>
#define N 300

main(){
	int i;
	for(i = 0; i < N; i++){
#if 0
		printf("%d\n", i);
		/* middle comment
		printf("%d\n", i * 10);
		printf("%d\n", i * 100);	// small comment
		*/
#endif
	}
}

大コメントが非常に便利ですね。0を1に書き換えるだけで、コメントから脱出させることができます。私も良く使います。