line_c | = 064;/*错误地设置位2,4和5*/.. Misra C准则.这是怎么发生的?

-3 c bit-manipulation misra

line_c=0;
line_c |= 064; /* wrongly sets bits 2,4 and 5 */
line_c |= 64; /* rightly sets bit 6 */
Run Code Online (Sandbox Code Playgroud)

Misra C指南.这是怎么发生的?请解释.

Dan*_*_ds 8

line_c |= 064; /* wrongly sets bits 2,4 and 5 */
Run Code Online (Sandbox Code Playgroud)

- > 064(前导零)表示八进制64(基数8),它是0011 0100二进制的.

line_c |= 64; /* rightly sets bit 6 */
Run Code Online (Sandbox Code Playgroud)

- >十进制64(基数为10),转换为0100 0000二进制.


P.P*_*.P. 5

带前导的整数文字0是八进制数.所以064 64(基体10).06452十进制的.因此,它将不同的位设置为什么64.