そうか・・・
charで表せない値を渡した場合はstrchrを呼んだ奴が悪いとして、
charで表せる(CHAR_BIT == 8として)8ビット目が1となる値を渡した時はcharにキャストしないと環境によってはうまく動かないのか。