我不确定如何使用按位运算符设置if语句,我可以使用条件运算符对它进行工作并总结枚举,但是我想知道如何使用&或|来实现。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
typedef enum eUser_Permissions
{
VIEW =1,
ADD=2,
EDIT=4,
DELETE=8
} User_Permissions;
void print_permissions(char* username, int permissions);
int main(void){
int x = VIEW;
int j = VIEW | ADD | EDIT;
int s = VIEW | ADD | EDIT | DELETE;
print_permissions("S", s);
print_permissions("X", x);
print_permissions("J", j);
return 0;
}
void print_permissions(char* username, int permissions)
{
if (permissions ==15)
{
printf("%s's permissions (%d): VIEW ADD EDIT DELETE", username, permissions);
printf("\n");
}
if (permissions ==1)
{
printf("%s's permissions (%d): VIEW", username, permissions);
printf("\n");
}
if (permissions == 7)
{
printf("%s's permissions (%d): VIEW ADD EDIT", username, permissions);
printf("\n");
}
您最初是使用按位OR运算符设置权限的,因此只需在检查时执行以下操作:
if (permissions == (VIEW | ADD | EDIT | DELETE))
如果要单独检查每个条件,请在传入的值和相关权限之间使用按位与:
printf("%s's permissions (%d):", username, permissions);
if (permissions & VIEW) {
printf(" VIEW");
}
if (permissions & ADD ) {
printf(" ADD");
}
if (permissions & EDIT ) {
printf(" EDIT");
}
if (permissions & DELETE) {
printf(" DELETE");
}
printf("\n");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句