有没有办法做到:
char* a = "Hello";
char* b = NULL;
char* c = a | b;
Result should be c = "Hello";
似乎它不适用于 Char*,但有没有办法做这样的事情?
有没有办法做到:
char* a = "Hello";
char* b = NULL;
char* c = a | b;
Result should be c = "Hello";
似乎它不适用于 Char*,但有没有办法做这样的事情?
这是胡说八道,不仅因为指针上的按位运算符会产生非常...有趣的...结果,而且主要是因为NULL 不能保证由 0 表示。
可以使用三元运算符。如果a == NULL,下面的代码将c设置为b ,否则将c设置为a。
char *c = (a == NULL)? b : a;
现在澄清一下按位运算符:| 和 & 处理操作数的位。假设我们有两个变量,a = 10000001 (128) 和 b = 10000010 (129)。a 和 b 的类型无关紧要,只有它们值的位表示。
一个 | b = 10000011,即对a和b的位进行按位或;
a & b = 10000000,即对a和b的位进行按位与;
当您直接使用变量值的位时,这些运算符是有意义的。在 C 中,指针的值是一块内存的地址,而不是它的块的内容。对指针应用位操作意味着对它们持有的地址应用位操作。此操作的结果几乎可以指向内存上的任何位置,使用此指针可能会给您带来分段错误(或至少是垃圾数据)。
如果它不为空,则以下将设置c
为a
,否则将其设置为b
:
char *c = a ? a : b;
这称为三元运算符。