我正在使用short(并且我必须使用short 进行赋值,否则我只会使用int)来扫描0-31之间的值,然后使用单个整数来存储这些扫描值中的6个。
这是我到目前为止所拥有的:
int vals = 0;
short ndx, newVal;
/* more printing/scanning and error checking in between */
newVal = newVal << (5*ndx);
vals = vals | newVal;
当我尝试在点 4 或 5 放置一个有效值时,它不起作用,只是保持 0 ......我想知道这是否是因为 short 只有 2 个字节长,所以按位左移只是摆脱了整个价值?如果这是问题,我可以添加某种演员来解决它吗?