【发布时间】:2015-09-11 20:57:36
【问题描述】:
#define BIT2 (1 << 2)
#define BIT0 (1 << 0)
unsigned int a = 0, temp = 0;
#define setBit2_a (a |= BIT2)
#define clearBit2_a (a &= ~BIT2)
#define setBit0_a (a |= BIT0)
#define clearBit0_a (a &= ~BIT0)
void main()
{
a=4; //use a scanf here for convinient
temp = a;
a & BIT0 != 0 ? setBit2_a : clearBit2_a;
temp & BIT2 != 0 ? setBit0_a : clearBit0_a;
printf("the number entered is a = %u\n\r", a);
}
这应该在变量 a 中设置位 0,但它在 ubuntu gcc 编译器中没有这样做,任何人都可以解释一下
【问题讨论】:
-
什么是架构,为 BIT0 定义的值是什么,a 的类型是什么?
-
你的代码不起作用:首先,
if (a = 4)总是返回true。其次,在您的示例中, a 根本不可能是4。第三,您没有将三元语句的结果分配给任何东西,那么它应该做什么?
标签: gcc ternary-operator operator-precedence