在写C语言上机题时遇到一行代码是
word[i] |= 0x20;
| 是“按位与”的意思
|= 就是按位与后赋值
0x20 是十六进制,转换为十进制是32,即ASCII码为32的空格
完整的函数如下:
bool is_the(char word[15]) //判断word是否为"the"
{
char the[] = "the";
if (strlen(word) != strlen(the))
return false;
for (int i = 0; i < strlen(word); i++)
word[i] |= 0x20;
return strcmp(word, the) == 0;
}
实现的功能是:
对每个字符转换为小写字母。如word[i]为'T'时,ASCII码为84,转换为二进制1010100 。与0x20即二进制为10000进行按位与。得到1110100,转换为十进制是116,对应的ASCII码为't'。