我可以typedef char
到CHAR1
这是8位。
但是如何将3位变量作为数据类型?
答案 0 :(得分:4)
您可能希望执行与以下内容类似的操作:
fieldof3bits
在这种情况下,my @list = ( "one", "two", "three", "onefour", "one" );
foreach my $f (@list) {
say "f: $f";
my $length = length($f);
say "length: $length";
say "true { $length && $f} $_: " . ( $length && "$f" ) for @list;
my $count = true { $length && "$f" } @list;
say "count: $count";
if ( $count > 1 ) {
print "Error with: ", $f, " counted ", $count, " times!\n";
}
$count = 0;
}
在结构中占用3位(基于您如何定义其他所有内容,结构的大小可能会有所不同)。
此用法称为bit field。
来自维基百科:
位字段是计算机编程中用于存储多个逻辑相邻位的术语,其中每个位组和单个位可以被寻址。位字段最常用于表示已知固定位宽的整数类型。
答案 1 :(得分:1)
看来你要求的是位域https://en.wikipedia.org/wiki/Bit_field 请注意,在某些情况下,使用char或unsigned char而不是位(编译器特定的,物理内存布局等)可以更安全。
快乐的编码!
答案 2 :(得分:1)
typedef struct {
int a:3;
}hello;
只有当它在内部结构中时才有可能