tizen.moe

tizen.moe

備忘録:C言語

とあるコードを読んでて悩んだ箇所がありまして。

  1 #include <stdio.h>
  2
  3 static int testCalc(int a, int b)
  4 {
  5   int ret = 0;
  6
  7   ret = a + b;
  8
  9   return ret;
 10 }
 11
 12 int main()
 13 {
 14   char a = 0x0f;
 15   char b = 0x00;
 16
 17   char c = (testCalc(a,b) || b);
 18
 19   printf("a = %x, b = %x, c = %x\n", a, b, c);
 20   return 0;
 21 }

L17の "testCalc(a,b) || b" って部分。一瞬どう評価されるのか出てきませんでした。スゴイC言語忘れ去ってる感が。。。考えれば左右のtrue/falseをorするだけなので、cには0か1しか入らないわけですが、が、が、、、動かすまで判りませんでした、、、orz