|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zhangjinxuan 于 2023-7-8 21:51 编辑
1.+++++
虽然看起来很奇怪,但是根据大嘴法原则,这个的正确解析为:
不同的编译器会有不同的结果,写这个的人估计非常冲明!
《奇妙运算》
2.指向自己的指针
这是合法的,读到 int *a 就已经为 a 开辟空间了,结果后面来一个 = a,但编译器不知情,就只能强行赋值了
只不过,这个值恒为 0,也就是 (void*)0
《指向自己》
3.指向自己的void指针
众所周知,void* 通吃所有类型,包括 void*,void***,void************************!
于是,我们可以对 a,进行 n 次的解引用,就像这样:
- #include <stdio.h>
- int main() {
- void* a = &a;
- printf("%d", *********************************************************************************************************************((int*********************************************************************************************************************)a));
- }
复制代码
得出来是一个随机无意义的数字
《超级指针》
4.Main递归
- #include <stdio.h>
- int main() {
- main();
- }
复制代码
栈里面本没有溢出,递归的次数多了,也便溢出了.....
虽然合法,编译通过,但,这操作有点……
不过在 debug 程序的时候,你想输入多组数据,又不想改代码,也不想一直输入./a.out(或按f10),加一个 main(),就能输入多组数据啦?
《调用自己》
5. 最短C++/C代码
解释:大部分编译器中,没有返回值的函数会自动返回 signed int,而碰巧 main 就必须是 signed int 类型,于是,就这样,成功运行了
可是
但凡它有点用,也不至于这么没用!
《最短代码》
6. 0个元素的数组
- #include <bits/stdc++.h>
- using namespace std;
- int main() {
- int a[0][114514][2147483647];
- printf("%d", sizeof(a));
- }
复制代码
这个 a 有什么用?第一维是 0,后面一切都空谈好吧!
sizeof(a) = 0,这比什么都没有的结构体更废,好吧!
更离谱的是:
- #include <bits/stdc++.h>
- using namespace std;
- int main() {
- int a[0];
- printf("%d %d", sizeof(a), sizeof(a[0]));
- }
复制代码
sizeof(a[0]) = 4, 大于 sizeof(a)!!!
妈妈,救命啊,数组元素比数组都要大了呀~
《神奇数组》
7. 不管怎样,必须得有一个“特别”的数字
我们打 oi 的时候,要开数组
我们开数组的时候,一定要遵守以下法则:
n <= 10000,数组大小 10086
n <= 100000,数组大小 114514 ?
n <= 1000000,数组大小 1919810 ???
n <= 2000000,数组大小 3141592 !
n <= 5000000,数组大小 5201314 !!!!!!
《数字专家》
大家还有什么让人不理解的操作吗?欢迎回帖分享~
例如:
- typedef struct {
- protected: friend inline const volatile double b(register unsigned short int *c(void), volatile signed char *d(union b, long e)){return sizeof(nullptr);}
- } a;
复制代码 |
评分
-
查看全部评分
|