【C言語】
ヨーダ記法は
昭和のウサギ跳びと同じ臭い
今は-Werrorオプションで
if(x=0)のバグを防ごう

warning: suggest parentheses around assignment used as truth value  警告:真偽値として使用するなら代入式にカッコつける[-Wparentheses] ■… 続きを読む 【C言語】
ヨーダ記法は
昭和のウサギ跳びと同じ臭い
今は-Werrorオプションで
if(x=0)のバグを防ごう

【C言語】
設定後未使用変数が
未使用変数より危ない理由
(set but not used)

warning: variable ‘r2’ set but not used 警告:変数 ‘r2’ は設定されたが未使用[-Wunused-but-set-variable] ■1.コピペミスの可能性 設定後未使用の問… 続きを読む 【C言語】
設定後未使用変数が
未使用変数より危ない理由
(set but not used)

【C言語】0を無理にマクロにするとかえってマジックナンバーになる

■1.間違った理解・正しい理解 ●間違った理解マジックナンバーとは裸の数字の事である。マクロは裸の数字ではないのでマジックナンバーではない。●正しい理解マジックナンバーとは意味のわからない数字の事である。 ■2.無理に0… 続きを読む 【C言語】0を無理にマクロにするとかえってマジックナンバーになる

【C言語】
【|】と【||】、【&】と【&&】の違い短絡評価とは?

■1.【|】と【||】の違い ●on()|off()  |はビット演算子なので両辺の関数は必ず呼ばれる(評価される)1|01=1=真なのでthenが表示される。 ●on()||off()) ||は論理演算子なのでon()… 続きを読む 【C言語】
【|】と【||】、【&】と【&&】の違い短絡評価とは?

【C言語】”文字列”とは
【単なるchar *】。
【符号無しchar *】ではなく
【符号付きchar *】でもない

warning: pointer targets in passing argument 1 of ‘strcpy’ differ in signedness 警告: ‘strcpy’ の第一引数… 続きを読む 【C言語】”文字列”とは
【単なるchar *】。
【符号無しchar *】ではなく
【符号付きchar *】でもない

【C言語サンプル】
今時の Hello world!
(C89/90を捨てC99へ移行)

c99仕様のC言語ではmain 末尾の return 0 は書かなくてもOK! C89仕様のC言語:30年以上前の古い仕様 gcc hello.c -Wall -std=c89 でコンパイルするとgccにmain のre… 続きを読む 【C言語サンプル】
今時の Hello world!
(C89/90を捨てC99へ移行)

【C言語】
文字列末尾の終端文字¥0は
自分で書かなくてOK

warning: embedded ‘\0’ in format 警告:書式中に終端文字¥0があると書式終了[-Wformat-contains-nul] ■1.末尾の¥0は自分で書かなくてOK 文字列リテラルの終端文字… 続きを読む 【C言語】
文字列末尾の終端文字¥0は
自分で書かなくてOK

【C言語】文字配列に終端文字¥0を入れる隙間が無い時はstrNcpyよりC99構造体の指示初期化子が便利

warning: ‘strncpy’ output truncated before terminating nul copying 8 bytes from a string of the same length 警告… 続きを読む 【C言語】文字配列に終端文字¥0を入れる隙間が無い時はstrNcpyよりC99構造体の指示初期化子が便利

【C言語】
if(“文字列”==”文字列”)は 文字列領域のアドレス比較で 文字列比較とは違う

warning: comparison with string literal results in unspecified behavior 警告:文字列リテラルに対する比較の結果は未規定動作です。代わりにstrcmp… 続きを読む 【C言語】
if(“文字列”==”文字列”)は 文字列領域のアドレス比較で 文字列比較とは違う

【C言語】
文字列が空かどうか終端文字¥0を使って判定する方法

■null判定って書くのは止めよう! 【null判定】【ヌル判定】【ナル判定】って書くのは止めよう! 【NULLポインタ判定】【空文字列判定】【終端文字¥0判定】と書こう。 ■推奨例:空文字列を判定する関数 NULLポイ… 続きを読む 【C言語】
文字列が空かどうか終端文字¥0を使って判定する方法

【C言語】
デッドコード(到達不能コード)
switch文内で初期値のある変数宣言

warning: statement will never be executed 警告:宣言時の代入文が実行されることはない[-Wswitch-unreachable] ■1.case文が無くてもエラーにならない 意味… 続きを読む 【C言語】
デッドコード(到達不能コード)
switch文内で初期値のある変数宣言

【C言語】
配列の要素数を求める時はsizeof(配列の型)ではなくてsizeof(配列名[0])と書こう

warning: expression does not compute the number of elements in this array 警告:この計算式では配列の要素数は求まりません。[-Wsizeof-ar… 続きを読む 【C言語】
配列の要素数を求める時はsizeof(配列の型)ではなくてsizeof(配列名[0])と書こう

【C言語】ゼロ除算の
見つけ方とガード処理
(Divide By Zero)

warning: division by zero 警告:ゼロ除算[-Wdiv-by-zero] ■1.ゼロ除算を見つけるのは難しい コンパイラの警告や静的解析ツールを使用してもゼロ除算を見つけるのは難しい。 人海戦術で… 続きを読む 【C言語】ゼロ除算の
見つけ方とガード処理
(Divide By Zero)