这是我的问题。我有以下结构定义
struct idt_reg{
unsigned short limit;
unsigned int base;
}__attribute__((packed));
在我的代码中,我执行以下任务
unsigned short num_ids = idtr.limit >> 3;
现在执行时,当idtr.limit
中存储的值等于2047(0x7FF)时,我预期发生的是右移3位(除以8)并获得255的值写入num_ids。相反,num_ids
的值始终为0.
我真的很感激任何帮助。
答案 0 :(得分:1)
此:
#include <stdio.h>
struct idt_reg{
unsigned short limit;
unsigned int base;
}__attribute__((packed));
int main() {
struct idt_reg idtr;
unsigned short num_ids;
idtr.limit = 2047;
num_ids = idtr.limit >> 3;
printf( "%d\n", num_ids );
}
打印255。