所以我正在将一个char变为long,然后清除并重新执行。 15的变化使我的机器变得古怪,请参阅代码中的评论。你认为这是什么造成的?C位移位奇数结果过去15位移位左移
本机焦为0x00,并长期为0x0000 0000
unsigned char temp;
unsigned long open_code;
temp = 0x01;
open_code = open_code | (temp <<1);// open_code = 0x0000 0002
open_code = 0;
//......
// 2 - 7
//....
temp = 0x01;
open_code = open_code | (temp <<8); // open_code = 0x0000 0100
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<9); // open_code = 0x0000 0200
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<10); // open_code = 0x0000 0400
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<11); // open_code = 0x0000 0800
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<12); // open_code = 0x0000 1000
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<13); // open_code = 0x0000 2000
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<14); // open_code = 0x0000 4000
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<15); // open_code = 0xFFFF 8000 !!!!!
open_code = 0;
temp = 0x01;
open_code = open_code | (temp <<16); // open_code = 0x0000 0000 !!!!!
你试图复制焦炭引入长,然后再转移呢? –
对我来说完全“正常”。只是C的各种投射规则的交互(这通常是不可思议的)。 –
你在哪个平台上? –