本文搜集了一些有趣的 C++的题目,有些题目令人大跌眼镜。来看看!
请问输出结果是什么?如何解释??
#include <iostream>
#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
int array[] = {23, 34, 12, 17, 204, 99, 16};
int main() {
for (int d = -1; d <= (TOTAL_ELEMENTS - 2); d++)
std::cout << array[d + 1] << std::endl;
return 0;
}
查看提示
请问输出结果是什么?如何解释??
#include <iostream>
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)
int main()
{
std::cout << h(f(1,2)) << std::endl;
std::cout << g(f(1,2)) << std::endl;
return 0;
}
查看提示
程序会输出None
吗?
#include <iostream>
int main() {
int a = 3;
switch (a) {
case 1:
std::cout << "ONE";
break;
case 2:
std::cout << "TWO";
break;
defalut:
std::cout << "NONE";
}
return 0;
}
查看提示
它们相等吗?
#include <stdio.h>
int main() {
double f = 0.0;
int i;
for (i = 0; i < 10; i++)
f = f + 0.1;
if (f == 1.0)
printf("f is 1.0\n");
else
printf("f is NOT 1.0\n");
return 0;
}
查看提示
逗号表达式可以正确赋值吗?
#include <iostream>
int main() {
int a = 1, 2;
std::cout << "a : " << a;
return 0;
}
查看提示
输出结果是什么?
#include <iostream>
#define SIZE 10
void size(int arr[SIZE]) {
std::cout << "size of array is:" << sizeof(arr);
}
int main() {
int arr[SIZE];
size(arr);
return 0;
}
查看提示
为什么会产生编译错误?
记住,将一个普通指针传递给 const 类型的指针是允许的。
void foo(const char **p) {}
int main(int argc, char **argv) {
foo(argv);
return 0;
}
查看提示
输出是什么?
#include <stdio.h>
#include <stdlib.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[i]);
return 0;
}
查看提示
输出是什么?肯定不是 10
#include <stdio.h>
#include <stdlib.h>
#define PrintInt(expr) printf("%s : %d\n",#expr,(expr))
int main() {
int y = 100;
int *p;
p = (int*)malloc(sizeof(int));
*p = 10;
y = y/*p; /*dividing y by *p */;
PrintInt(y);
return 0;
}
查看提示
如何实现乘 5?
#include <stdio.h>
#define PrintInt(expr) printf("%s : %d\n",#expr,(expr))
int FiveTimes(int a) {
int t;
t = a << 2 + a;
return t;
}
int main() {
int a = 1, b = 2, c = 3;
PrintInt(FiveTimes(a));
PrintInt(FiveTimes(b));
PrintInt(FiveTimes(c));
return 0;
}
查看提示
这个程序哪里有问题?
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr1, ptr2;
ptr1 = (int *) malloc(sizeof(int));
ptr2 = ptr1;
*ptr2 = 10;
return 0;
}
查看提示
这个程序可以运行吗?
#include <stdio.h>
int main() {
int a = 3, b = 5;
printf(&a["Ya!Hello! how is this? %s\n"], &b["junk/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;
}
查看提示
offsetof
的原理是什么?
#include <stdio.h>
#define offsetof(a, b) ((size_t)(&(((a*)(0))->b)))
struct test {
int a;
double b;
float c;
int d[20];
};
int main() {
printf("%d\n", offsetof(test, a));
printf("%d\n", offsetof(test, b));
printf("%d\n", offsetof(test, c));
printf("%d\n", offsetof(test, d));
}
查看提示
SWAP
宏是如何工作的?
#include <iostream>
#define SWAP(a, b) ((a) ^= (b) ^= (a) ^= (b))
int main() {
int a = 1;
int b = 2;
SWAP(a, b);
std::cout << a << b;
}
查看提示