2016-09-21 2 views
-3
//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)); 
} 
+3

'scanf ("% d", &n);'형식 지정자가 데이터 형식과 일치하지 않으며 다른 scanf도 –

+1

'scanf ("% d", & n)''char n'을 사용하면 정의되지 않음 실제로'scanf ("% d", & pos)'와 동일하다. 실제로 scanf는 크기가 1 바이트 인 변수에 4 바이트의 데이터를 쓴다. (일반적으로이 크기는 언어 표준에 의해 규정되지는 않지만 대부분의 플랫폼에서 그렇습니다.) 당신은 키보드에서 어떤 종류의 데이터를 스캔하고 싶습니까?''% d "'-'int'를 사용하십시오'char' -'"% c " –

+0

형식 코드를 제출하십시오. –

답변

0

*scanf 함수의 경우 변환 지정자 int *; 그 경우가 아니라면, 동작은 이고, 정의되지 않은 것은이며, 거의 인 경우 결과가 가능합니다. 당신이 posn에 대한 char을 사용하려면

, 당신은 scanf 호출 %hhd 대신 %d를 사용해야합니다.

+0

여전히 출력이 동일합니다. – rin92