我现在是这么做的,感觉比较繁琐
int arrRlt[5] = { 0 };
arrRlt[0] = IsTestOK(0);
arrRlt[1] = IsTestOK(1);
arrRlt[2] = IsTestOK(2);
arrRlt[3] = IsTestOK(3);
arrRlt[4] = IsTestOK(4);
bool isOK = true;
for (int i = 0; i < 5; i++)
{
if (arrRlt[i] == 1)
{
isOK = false;
break;
}
}
return isOK;
现在想用一个int来存放IsTestOK的返回结果,然后检测如果哪一位是1则表示失败,但不知道具体该如何实现?
可以用位操作
放到vector中用count方法判断是否含有1,如果有1就index方法输出其索引,就知道哪一位是·1
你用一个int的不同位来存放,代码只会更复杂,而并不更简单
你节省的仅仅是几个字节的内存,但是浪费的代码其实完全把那些内存给占了,是得不偿失的行为
typedef struct
{
uint32_t Err1:1;
uint32_t Err2:1;
uint32_t Err3:1;
uint32_t Err4:1;
uint32_t Err5:1;
//........
}ERR_T;
ERR_T test()
{
ERR_T Error;
if(xxx)Error.err1=true;else Error.err1=false;
if(xxx)Error.err2=true;else Error.err2=false;
//...
return Error;
}
比较常见的应用,需要在一个int里返回各种错误状态