我有一个char [16]数组,我从用户那里得到输入: 输入例如-15,21,23,-1
我需要为位置15,21和23将位值设置为“1”。 -1将完成该程序。
每个char [16]数组表示0-127的值,表示位。 我有问题在15,21和23个单元格中输入'1'。
这是我的程序
int temp;
char A[16];
/*Sets all the cells values to o*/
memset(A, 0, 16*sizeof(char));
While (int != -1)
{
scanf("Enter values from the user:%d", val");
div = (temp/8);
mod = (temp%8);
A[div] |= (mod<<=1);
}
它没有将单元格15,21和23值设置为“1”的问题。
答案 0 :(得分:2)
使用此项设置正确的位:
A[div] |= (1<<mod);
相关问题:How do you set, clear, and toggle a single bit?
完整代码示例:
#include <iostream>
int main() {
unsigned char A[16];
memset(A, 0, sizeof(A));
int t;
std::cin >> t;
while (t != -1)
{
int div = (t/8);
int mod = (t%8);
A[div] |= (1<<mod);
std::cin >> t;
}
for(int i = 0; i < 16; ++i) {
std::cout << (int)A[i] << " ";
}
std::cout << std::endl;
return 0;
}
答案 1 :(得分:0)
没有为char定义位字段(如果你使用char使用unsigned ..),请使用unsigned int。或C99 boolean类型。 https://stackoverflow.com/a/3971334/1419494