|
本文展示了10个C语言的迷题以及答案,而且有相当的一些例子可能是我们日常工作可能会见得到的。通过这些迷题,希望你能更了解C语言。 如果你不看答案,不知道是否有把握回答各个谜题?让我们来试试。 会输出"hello-std-out"? #include<stdio.h> int main() { while (1) { fprintf(stdout, "hello-std-out"); fprintf(stderr, "hello-std-err"); sleep(1); } return 0; } 参考答案: 2 这段程序是有问题吗? #include<stdio.h> int main() { int a = 1,2; printf("a : %d\n",a); return 0; } 参考答案:
3 下面的程序会有什么样的输出呢? #include<stdio.h> int main() { int i=43; printf("%d\n",printf("%d",printf("%d",i))); return 0; } 参考答案
4 下面的程序会输出什么? #include<stdio.h> int main() { float a = 12.5; printf("%d\n", a); printf("%d\n", (int)a); printf("%d\n", *(int*)&a); return 0; } 参考答案 该项程序输出:"0 12 1095237632"。
5 下面的程序输出是多少?并解释为什么? #include<stdio.h> int main() { int a = 1; switch (a) { int b = 20; case 1: printf("b is %d\n", b); break; default: printf("b is %d\n", b); break; } return 0; } 参考答案
6 下面的程序会有什么潜在的危险? #include<stdio.h> int main() { char str[10]; printf("Enter the string:"); scanf("%s", str); printf("You entered:%s\n", str); return 0; } 参考答案
7 请问下面的程序输出什么? #include<stdio.h> int main() { int i; i = 10; printf("i : %d\n", i); printf("sizeof(i++) is: %d\n", sizeof(i++)); printf("i : %d\n", i); return 0; } 参考答案 如果你觉得输出分别是:10,4,11。那么你就错了。
8 下面的程序的输出值是什么? #include<stdio.h> #define SIZEOF(arr) (sizeof(arr)/sizeof(arr[0])) #define PrintInt(expr) printf("%s:%d\n",#expr,(expr)) int main() { /* The powers of 10 */ int pot[] = { 0001, 0010, 0100, 1000 }; int i; for (i = 0; i < SIZEOF(pot); i++)PrintInt(pot); return 0; } 参考答案
9 下面的输出是什么? #include<stdio.h> int main() { int i = 6; if (((++i < 7) && (i++ / 6)) || (++i <= 9)); printf("%d\n", i); return 0; } 参考答案 本题并不简单的是考前缀++或反缀++,本题主要考的是&&和||的短路求值的问题。
所以,我相信你会知道本题的答案是什么了。 10 下面的C程序是合法的吗? #include<stdio.h> int main() { int a = 3, b = 5; printf(&a["Ya!Hello! how is this? %s\n"], &b["junk/super"]); //等价printf("Hello! how is this? %s\n", "super"); printf(&a["WHAT%c%c%c %c%c %c !\n"], 1["this"], 2["beauty"], 0["tool"], 0["is"], 3["sensitive"], 4["CCCCCC"]); return 0; } 参考答案 本例是合法的,输出为:"Hello! how is this? super That is C !"
|
微信公众号
手机版