下記質問での、

strchr() の第2引数はなぜ int 型なのでしょうか(2/2) | OKWave
http://okwave.jp/qa/q4151525_2.html

回答No.4にて、

>実引数の型と仮引数の型が矛盾する場合の動作は未定義です

と書いてありますので、char型の実引数をint型の仮引数に渡す場合、厳密には以下のようにキャストが必要ということでしょうか?

char *s = "abcd";
char c = s[1];

strchr(s, (int)c);

同じ理由で、sqrt関数に渡すときもキャストが必要という認識でOKでしょうか?

int n = 10;
sqrt( (dobule)n );