とあるコードを読んでて悩んだ箇所がありまして。
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