当变量类型不同时,为什么下面的代码会给出不同的输出?

时间:2016-09-21 16:30:30

标签: c char int bit

//o/p when i/p is 16 and 2 is 4 and if  variable is int then o/p will be 20;   

#define SETBIT(A,B) A|1<<B

int main(){
    char n,pos;
    printf("Enter a value");
    scanf("%d",&n);
    printf("Enter position");
    scanf("%d",&pos);
    printf("Value after setting %d",SETBIT(n,pos));
}

1 个答案:

答案 0 :(得分:0)

对于*scanf函数,d转换说明符期望其对应参数的类型为int *;如果不是这种情况,则行为未定义,并且几乎任何结果都是可能的。

如果您想char使用posn,则必须在%hhd来电中使用%d代替scanf