yakusouX5の日記: 先生! 4
日記 by
yakusouX5
struct test{
unsigned char a;
unsigned char b;
};
void test(struct test aaa){
aaa.a << 10;
}
int main(void){
struct test aaa;
aaa.a=10;
test(aaa);
rerurn 0;
}
とし、aaa.aにシフトをかけると aaa.a が int 扱いになるのはなぜなんでしょうか?
unsigned char a;
unsigned char b;
};
void test(struct test aaa){
aaa.a << 10;
}
int main(void){
struct test aaa;
aaa.a=10;
test(aaa);
rerurn 0;
}
とし、aaa.aにシフトをかけると aaa.a が int 扱いになるのはなぜなんでしょうか?
適当に思いついた事 (スコア:1)
- aaa.aを10ビットシフトする事によって、型の拡張が起きている。
- struct testのメンバが4バイト単位でアラインメントされている。
1番はなんとなく間違っていそうなので、多分2番だと思います。Re:適当に思いついた事 (スコア:1)
unsigned intにすれば万事解決ということですか。
CPUの都合ということですが、手持ちの参考書には一切書かれていないのは、かなり問題だと思うのですが。
うすっぺらいコメントがあらわれた! ▼
Re:適当に思いついた事 (スコア:1)
Re:適当に思いついた事 (スコア:1)
導きありがとうございます。
うすっぺらいコメントがあらわれた! ▼