LoginSignup
5
3

More than 5 years have passed since last update.

C言語でのショートコーディング

Last updated at Posted at 2016-08-20

C言語には環境にも依存するがショートコーディングの手法が多々あるので忘れないようにメモで残しておく。

宣言の省略

sample1.c
a,b,c;
main(){}

stdio.hのinclude文はコンパイル時にWarningが出るが、省略することができる。
また、int型の宣言は、C言語はデフォルトでintと宣言するため省略することができる。
また、グローバル変数はローカル変数とは違い、0に初期化されるのでこれらも用いることができる。
上のsample1.cではa,b,cがint型で宣言され、中身の値は0で初期化されている。
main関数のintも省略して書ける。returnも書く必要はない。

条件分岐の省略

三項演算子

sample2.c
int a, b, c;
c = (a < b)?a:b;

三項演算子は(条件式)?(真のとき):(偽のとき)で分岐をすることができる。

if文自体を省略

sample3.c
a;
main(){
    !a&&printf("Hello\012");
}

「&&」を用いることで、(条件)&&(条件が真の時実行される処理)
という書き方ができる。この場合では初期化されたaの値は0なので
!aは真になり、Helloが出力される。
偽のときに実行されるようにしたい場合は「||」を用いる。

コマンドライン引数の省略

コマンドライン引数とはmain関数に渡される引数のことである。
main関数の第一引数にはintが、第二引数にはchar**が入る。実行環境によってこれは異なるが、
もしこの引数の中身の型宣言を省略したい場合、特殊な書き方が必要になる。

//main(int a,char**b){}
  main(a,b)char**b;{}

第一引数のint型の宣言を省略することはできない。しかし、どちらの型宣言も省略しようとするとエラーを吐く。これを解決する為に上のような書き方をする。
この書き方にすると正規の書き方に比べて2byte分省略することができる。

自分はまだまだC言語とかショートコーディングビギナーなので間違ってるとこあったら教えてくださいm(_ _)m

5
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3