50 строки
1.1 KiB
Plaintext
50 строки
1.1 KiB
Plaintext
#include <stdio.h>
|
|
int global = 20;
|
|
int *far;
|
|
int main() {
|
|
int x = 5;
|
|
int y = x + 17;
|
|
int z = (y - 1) / 2; // Should stay an integer after division!
|
|
y += 1;
|
|
int w = x * 3 + 4;
|
|
int k = w < 15 ? 99 : 101;
|
|
far = &k;
|
|
*far += global;
|
|
int i = k > 100; // Should be an int, not a bool!
|
|
int j = i << 6;
|
|
j >>= 1;
|
|
j = j ^ 5;
|
|
int h = 1;
|
|
h |= 0;
|
|
int p = h;
|
|
p &= 0;
|
|
printf("*%d,%d,%d,%d,%d,%d,%d,%d,%d*\n", x, y, z, w, k, i, j, h, p);
|
|
|
|
long hash = -1;
|
|
size_t perturb;
|
|
int ii = 0;
|
|
for (perturb = hash;; perturb >>= 5) {
|
|
printf("%d:%d", ii, perturb);
|
|
ii++;
|
|
if (ii == 9) break;
|
|
printf(",");
|
|
}
|
|
printf("*\n");
|
|
printf("*%.1d,%.2d*\n", 56, 9);
|
|
|
|
// Fixed-point math on 64-bit ints. Tricky to support since we have no 64-bit
|
|
// shifts in JS
|
|
{
|
|
struct Fixed {
|
|
static int Mult(int a, int b) {
|
|
return ((long long)a * (long long)b) >> 16;
|
|
}
|
|
};
|
|
printf("fixed:%d\n", Fixed::Mult(150000, 140000));
|
|
}
|
|
|
|
printf("*%ld*%p\n", (long)21,
|
|
&hash); // The %p should not enter an infinite loop!
|
|
return 0;
|
|
}
|