奇数だったらtrueを返すような関数なかったでしょうか?
どなたかご存知ないですか?
2で割ったあまりを求めればいいだけでは?
どうやったらいいですかね?
コードで表すとどのようになりますか?
int型限定ならたぶん簡単すぎて関数使わない・作らない。
bool isOdd(int x)
{
return (x & 1) ? true : false;
}
wclrp ( 'o')さん
ありがとうございます。
> return (x & 1) ? true : false;
これのコードの意味ですが
?がifの代わりでしたっけ?
そうであればtrue
そうでなければfalseで解釈はいいのですか?
いちばん問題なのは
引数xと1という判断でなぜ奇数かどうかわかるのか
なぞなんですが?
ここのところの解説をお願いしたいんですが?
> ?がifの代わりでしたっけ?
> そうであればtrue
> そうでなければfalseで解釈はいいのですか?参考演算子です。
その解釈でOKです。
> いちばん問題なのは
> 引数xと1という判断でなぜ奇数かどうかわかるのか
> なぞなんですが?
ビット演算です。
http://mail2.nara-edu.ac.jp/~asait/operation.htm
とか
http://www5c.biglobe.ne.jp/~ecb/c/05_04.html
を参考にしてみてください。
x = xの第0bit + xの第1bitx2 + xの第2bitx4 + ...
であり、上式の二項以降はすべて偶数。
なのでxの奇偶は第0bitの0/1を判定すればいい。
ありがとうございます!
ご返信してくださって。
ちょっとビット演算については苦手なんで
折をみて機会があれば勉強したいと思います。
では、失礼します。
どう見ても初心者なんだから、こう教えてあげればいいでしょうに…
bool isOdd(int x)
{
if(x%2==1){
return true;
}else{
return false;
}
}
ツイート | ![]() |