【发布时间】:2018-12-21 08:39:59
【问题描述】:
似乎我的程序在这一行崩溃了,我对填充了 NULL 值的“a”数组(空数组)进行了一些按位操作,这会导致程序崩溃吗?
const unsigned char a [ something ];
int b;
b = (a[0] & 0x0f) << 8;
【问题讨论】:
-
字符永远不会为 NULL。字符数组的末尾可以有一个 0 来终止一个字符串,但即使这样也是一个有效的 char 值。
-
您的程序甚至可能无法编译,因为需要初始化一个 const 值。请出示您的实际代码。
-
您的程序包含未定义的行为。如果程序在该特定行崩溃,并不意味着问题出在该行。尝试隔离问题,并提供minimal reproducible example。
-
没有空数组这种东西。
标签: c++ null bitwise-operators nullable bit-shift