技术0
经验373
魅力0
人气0
分享0
原创0
注册时间2023-2-3
最后登录2023-5-21
阅读权限15
在线时间8 小时
主题3
回帖6
初出茅庐
- 积分
- 191
- 人气
- 0
- 分享
- 0
|
本帖最后由 liu12073 于 2023-4-5 16:05 编辑
1.+++++
虽然看起来很奇怪,但是根据大嘴法原则,这个的正确解析为:
[C++] 纯文本查看 复制代码 (a++)+(-(++a))
不同的编译器会有不同的结果,写这个的人估计非常冲明!
2.指向自己的指针
[C++] 纯文本查看 复制代码 int *a = a;
这是合法的,读到 int *a 就已经为 a 开辟空间了,结果后面来一个 = a,但编译器不知情,就只能强行赋值了
只不过,这个值恒为 0,也就是 (void*)0
3.指向自己的void指针
[C++] 纯文本查看 复制代码 void *a = *a;
众所周知,void* 通吃所有类型,包括 void*,void***,void************************!
于是,我们可以对 a,进行 n 次的解引用,就像这样:
[C++] 纯文本查看 复制代码 #include <stdio.h>
int main() {
void* a = &a;
printf("%d", *********************************************************************************************************************((int*********************************************************************************************************************)a));
}
得出来是一个随机无意义的数字
4.Main递归
[C++] 纯文本查看 复制代码 #include <stdio.h>
int main() {
main();
}
栈里面本没有溢出,递归的次数多了,也便溢出了.....
虽然合法,编译通过,但,这操作有点……
不过在 debug 程序的时候,你想输入多组数据,又不想改代码,也不想一直输入./a.out(或按f10),加一个 main(),就能输入多组数据啦?
5. 0个元素的数组
[C++] 纯文本查看 复制代码 #include <bits/stdc++.h>
using namespace std;
int main() {
int a[0][114514][2147483647];
printf("%d", sizeof(a));
}
这个 a 有什么用?第一维是 0,后面一切都空谈好吧!
sizeof(a) = 0,这比什么都没有的结构体更废,好吧!
更离谱的是:
[C++] 纯文本查看 复制代码 #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)!!!
妈妈,救命啊,数组元素比数组都要大了呀~
|
评分
-
查看全部评分
|