프로그램/C/C++/OOC

[C 역량 강화 문제] 논리 연산 문제 - 답 리플 금지

와이즈캣 2008. 3. 25. 12:32
다음 소스에서 ||(OR)연산자를 사용했는데도 불구하고
변수 b의 값이 증가되지 않는 이유는?

소스 1
int main()
{
      int a = 0;
      int b = 2;

      a=1 || ++b;
      printf("b = [%d]\n",b);

      return 0;
}

출력 : b = [2]




논리 &&와 ||는 우선순위가 &&가 더 높은데 아래처럼
출력 되는 이유는?

소스 2
int main()
{
      int a = 2;
      int b = 2;
      int c = 0;

      c = 1 || ++a && ++b;
   // c = 1 || (++a&&++b); 를 해도 a,b값은 올라가지 않는 가?
      printf("a = [%d],  b = [%d]\n", a, b);

      return 0;
}

출력 : a = [2],  b = [2]