c - 如何理解程序

标签 c linux

int mask = 0700, N_BITS = 3;
struct stat buff;
static char perm[] = {"---", "--x", "-w-", "-w x", "r--", "r-x", "rw-", "rwx"};
stat(f_d, &buff); //get the permissions info of file
printf("%3s", perm[buff.st_mode & mask >> (i - 1) * N_BITS)] //HOW TO UNDERSTAND ?`
mask >>= N_BITS; //HOW TO UNDERSTAND ?

最佳答案

>> 是按位右移运算符。

X >>= N

相当于

X = X >> N

一些例子:

  • (4 >> 1) = (0100b >> 1) = 0010b = 2
  • (12 >> 2) = (1100b >> 2) = 0011b = 3

关于c - 如何理解程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30680333/

相关文章:

C 程序在分配内存后使用 getchar 时崩溃

c - 如何编写一个函数来搜索数组中的字符串

c++ - 为什么指向字符串数组的指针会颠倒索引顺序?

c - 堆栈缓冲区溢出 : Works on GDB, 不在它之外

c++ - C i2c芯片读取MCP9800突然开始失败

python - 使用 Python 调整 Gnome

c - 使用 CUBLAS 批量 QR 分解

c - 将 x86 程序下面的端口移植到 mips32

linux - PATH 应该包含目录还是二进制文件的完整路径?

linux - linux 内核支持多少个 vrf,哪些系统资源限制了 vrf 数量?