質問: 0; hogehoge_dt += 100; hogehoge_dt += 110; hogehoge_dt += 111; hogehoge_dt += 1581; hogehoge_dt += 1711; return( (unsigned char)(hogehoge_dt (int)0xffffU) ); } ``` 上記関数のreturnですが、intの変数に対して、unsigned char型にキャストしてからreturnいるのは理解できるのですが、その隣の (int)0xffffU は何なのでしょうか? hogehoge_dtは関数ではなく、ローカル変数です。 このコードはコンパイルOKとして通ると聞いております。 ※実行環境が配布されていないため、ソースコードのみ閲覧できる状態です。 このような書き方をした場合、どのように処理されるのでしょうか?
回答: 大変お騒がせしております。 自己解決いたしました。 return文のところですが、正確には下記の式です。 ``` return( (unsigned char)(hogehoge_dt ^ (int)0xffffU) ); ``` 「^」排他的論理和を見逃しておりました。 見逃していた理由は、利用しているエディタの「TAB」記号と同じ記号だったため、TABと勘違いしておりました。 エディタ上の文字をよく見ると「^」の色が違います。 よって、表題のreturn文について、式の謎は単純な論理計算であり、特に問題ないと理解できました。 ちなみにですが、表題の関数は「チェックサムデータ作成」の為の関数です。