عملیّات شوم

برنامه‌ی زیر را در نظر بگیرید.

آیا این برنامه به‌درستی کامپایل می‌شود؟ در صورت منفی بودن جواب، خطای کامپایل آن را رفع کنید.

#include <cstdio>
void show(x) { printf("%d\n", x); }
int main() {
  /* place any of below codes here */
  return 0;
}

برای هر یک از تکّه کدهای زیر، در صورتی که آن را در قسمت مشخص شده در main برنامه‌ی بالا قرار دهیم، خروجی یا خطا را بنویسید.

کد الف. توجه کنید که اولویت $»$ و $«$ برابر است. عیناً مانند $+$ و $-$.

  int a = 0x5C;
  show(a >> 4 << 4);

کد ب. توجه کنید که اولویت $\sim$ بیش‌تر از / است.

  int b = ~unsigned(0) / 2;
  show(b);

کد ج. در C چگونه می‌شد باینری نوشت؟!

  int c = 01010 / 10;
  show(c);

کد د. اولویت عملگرهای unary بالاتر از عملگرهای binary است.

  unsigned char d = !55 ^ ~55;
  show(d);

کد ه‍. خیلی هم پیچیده نیست!

  unsigned char e = 1;
  for (int i=0; i+1<7; i++)
    e = (e << 1) + ( (e >> i) & 1);
  show(e);
  e++;
  unsigned char f = 2 * e - 2;
  show(f);