为变量分配值的更好方法

迪莫纳塔(Deamonata)

因此,我目前正在编写一些代码,该代码将输出根据变量的位状态创建的字符串。目前,我的代码看起来与这些大致相同

uint8_t importantVariable;

if(BIT0&importantVariable){
    valA = 'A';
else{
    valA = 'B';
}
if(BIT1&importantVariable){
    valB = 'A';
else{
    valB = 'B';
}
if(BIT2&importantVariable){
    valC = 'A';
else{
    valC = 'B';
}

printf(examplestring, "valA is %c, valB is %c, valC is %c",ValA,ValB,ValC);

但是,这似乎是一种很笨拙的方法,我想知道是否有一种更短的方法可以完成相同的事情。

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

您可以使用每个位的可能值制作一个数组,并结合使用移位和掩码以获得适当的值。

这是一个例子:

// Rather than defining a mask, say, 0x04, define the number of right shifts
// for the corresponding bit to get into the LSB position:
#define BIT3_SHIFT 2

static char bit3_values[] = {'A', 'B'};
...
valA = bit3_values[(importantVariable >> BIT3_SHIFT) & 1];

这种方法使您可以将目标值移到数组初始化器中,以便它们不再是代码的一部分。它还消除了条件执行。

它还使您可以对几个连续位的组合进行操作。例如,如果要基于位6和7的组合分配四个值之一,则可以定义一个四元素值数组,将importantVariable6移位,并0x03在索引到值数组之前使用mask掩码

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为变量分配值的更好方法

来自分类Dev

分配变量的更好方法?

来自分类Dev

为变量动态分配值的最佳方法?

来自分类Dev

在类中为变量分配方法值

来自分类Dev

根据另一个变量的值为变量分配值的优雅方法

来自分类Dev

汇总为默认值的更好方法

来自分类Dev

为变量分配命令输出的grep值

来自分类Dev

Java:为变量分配其当前值?

来自分类Dev

C#为变量分配新值

来自分类Dev

在tikz中为变量分配范围值

来自分类Dev

根据条件为变量分配值

来自分类Dev

通过字典为变量分配值

来自分类Dev

快速命令为变量分配值并打印

来自分类Dev

从选择计数为变量分配值

来自分类Dev

为Smarty变量分配真/假值

来自分类Dev

为变量分配命令输出的grep值

来自分类Dev

变量答案未分配值为true

来自分类Dev

VBA 为变量分配了错误的值

来自分类Dev

为 NuSMV 中的变量分配随机值

来自分类Dev

有没有更好的方法来为 numpy 数组标量分配一个新值?

来自分类Dev

从表选择分配存储过程输出值的更好方法

来自分类Dev

在Python中,根据字典是否包含键,为变量分配值的最小方法是什么?

来自分类Dev

哪一种方法比将HTML标记设置为PHP变量的值并查看初始导向器更好?

来自分类Dev

在Ruby中为插值变量分配插值

来自分类Dev

检查多个变量没有重复值的更好方法

来自分类Dev

验证 php 对象字段是否为空值的更好方法

来自分类Dev

无法在SQL中为本地变量分配默认值

来自分类Dev

在PostgreSQL 9.3中为变量分配选择值

来自分类Dev

在Scala模板中为变量创建和分配值