预测以下程序的输出 问题1
null
C
int main() { int i = 0; while (i <= 4) { printf ("%d", i); if (i > 3) goto inside_foo; i++; } getchar (); return 0; } void foo() { inside_foo: printf ("PP"); } |
输出:编译器错误:已使用但未定义标签“inside_foo”。 说明:标签的范围在函数中。我们无法从其他函数转到标签。
问题2
C
#define a 10 int main() { #define a 50 printf ("%d",a); getchar (); return 0; } |
产量:50 如果我们重新定义预处理器指令,预处理器不会给出任何错误。不过,它可能会发出警告。预处理器在使用前获取最新的值,并将其替换为a。 现在试试下面的内容
C
#define a 10 int main() { printf ("%d ",a); #define a 50 printf ("%d ",a); getchar (); return 0; } |
问题3
C
int main() { char str[] = "geeksforgeeks"; char *s1 = str, *s2 = str; int i; for (i = 0; i < 7; i++) { printf (" %c ", *str); ++s1; } for (i = 0; i < 6; i++) { printf (" %c ", *s2); ++s2; } getchar (); return 0; } |
输出 g g g g e k s f 解释 s1和s2都被初始化为str。在第一个循环中,str被打印,s1被递增,所以第一个循环只打印g。在第二个循环中,s2被递增,s2被打印,所以第二个循环将打印“g e k s f”
问题4
C
int main() { char str[] = "geeksforgeeks"; int i; for (i=0; str[i]; i++) printf ("%c%c%c%c", str[i], *(str+i), *(i+str), i[str]); getchar (); return 0; } |
输出: gggg 伊伊 伊伊 kkkk ssss ffff 哦 rrrr gggg 伊伊 伊伊 kkkk ssss 说明: 以下是索引数组和字符串的不同方法。 arr[i] *(arr+i) *(i+arr) i[arr] 所以它们都印着相同的字符。
问题5
C
int main() { char *p; printf ("%d %d ", sizeof (*p), sizeof (p)); getchar (); return 0; } |
输出:依赖于编译器。我的输出是“14” 说明: 上述程序的输出取决于编译器。sizeof(*p)给出字符的大小。如果字符存储为1字节,那么sizeof(*p)给出1。 sizeof(p)给出指针变量的大小。如果指针变量被存储为4字节,那么它将给出4。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END