$largeArray = [...];
$outputArray = array_filter($largeArray, function($element) {
if (empty($element)) { return false; }
return true;
});
echo implode(',', $outputArray);
int8 a = <some value>;
int16 b = <some value>;
a |= b;
线程化为16位整数吗?a
会丢掉8个最重要的位吗?答案 0 :(得分:3)
这里将进行整体推广。 uint8_t
将被提升为已签名 int
以及uint16_t
值,然后转换回uint8_t
。
答案 1 :(得分:2)
与大多数常见系统†(我曾经使用的所有系统)一样,int8_t
和int16_t
的转化率都低于int
,两个操作数均为将被提升为后者。
然后,operator |=
对这两个(通常为32位)int
进行操作,在最后一步中,生成的int
将转换为int8_t
。如果结果不适合int8_t
,则a
的值是实现定义的。通常,它只会丢弃额外的位。
†实际上,对于所有系统,int
至少为16位且long
至少为32位,因此您使用的类型都不能包含排名大于int
。