#!./main #include #include #include #include #include int x = 21; int baz(int xx, ...) { return 42; } int foo(void) { return x + x; } char *bar(void) { return "bye bye"; } struct Point { float x, y; }; struct Point pt; float Point_magnitude(struct Point p) { return sqrtf(p.x * p.x + p.y * p.y); } int gbl[5]; int gg[] = { -2, ~2, !2, 6+7, 6*7 }; int main(int argc, char **argv) { printf("hello, world %d %s\n", foo(), bar()); printf("baz is %d %d %d\n", baz(1), baz(1, 2), baz(1, "two", 3)); printf("%d\n", 6*7); int x = 42; int *p = &x; printf("x is %d p is %p\n", *p, p); *p = 666; printf("x is %d %d\n", x, *p); x = 123; printf("x is %d %d\n", x, *p); for (x = 0; x < 10; ++x) { if (x == 5) printf("%%"); printf("%d ", x); } printf("\n"); while (x > 0) printf("%d ", --x); printf("\n"); printf("%d\n", sizeof(char *)); int i, array[5] = { 2, 3, 5, 7, 11 }; printf("array size %d\n", sizeof(array)); for (i = 0; i < 5; ++i) printf("%d\n", array[i]); for (i = 0; i < 5; ++i) array[i] = i*i; for (i = 0; i < 5; ++i) printf("%d\n", array[i]); for (i = 0; i < 5; ++i) array[i] = array[i] * array[i]; for (i = 0; i < 5; ++i) printf("%d\n", array[i]); printf("%p\n", array); printf("%p\n", array + 10); p = array; printf("%p\n", p); printf("%p\n", array+5); while (p < array+5) printf("%d\n", *p++); printf("%p\n", array); printf("%p\n", &array); printf("%p\n", &array[0]); assert(array == &array); assert(array == &array[0]); assert(&array == array); assert(&array[0] == array); char *sliteral = "string literal"; char sarray[] = "string array"; char tarray[13] = "string array"; char uarray[20] = "string array"; char varray[12] = "string array"; printf("%zd %s\n", sizeof(sliteral), sliteral); printf("%zd %s\n", sizeof(sarray), sarray); printf("%zd %s\n", sizeof(tarray), tarray); printf("%zd %s\n", sizeof(uarray), uarray); printf("%zd %s\n", sizeof(varray), uarray); // varray has unterminated string printf("gbl %f %f -> %f\n", pt.x, pt.y, Point_magnitude(pt)); // global data is filled with zero pt.x = 3.0; pt.y = 4.0; printf("gbl %f %f -> %f\n", pt.x, pt.y, Point_magnitude(pt)); struct Point qt; printf("lcl %f %f -> %f\n", qt.x, qt.y, Point_magnitude(qt)); // local data is random qt.x = 3.0; qt.y = 4.0; printf("lcl %f %f -> %f\n", qt.x, qt.y, Point_magnitude(qt)); struct Point rt = { 5.0, 12.0 }; printf("%f %f -> %f\n", rt.x, rt.y, Point_magnitude(rt)); for (i = 0; i < 5; ++i) printf("g %d\n", gbl[i]); // global data is filled with zero int lcl[5]; for (i = 0; i < 5; ++i) printf("l %d\n", lcl[i]); // local data is random int ll[] = { -2, ~2, !2, 6+7, 6*7 }; for (i = 0; i < sizeof gg / sizeof(int); ++i) printf("g %d ", gg[i]); printf("\n"); for (i = 0; i < sizeof ll / sizeof(int); ++i) printf("l %d ", ll[i]); printf("\n"); printf("passed\n"); return 0; } // Local Variables: // mode: c // End: