【娱乐向】c/c++语言不能说的秘密
大家都爱c/c++不是吗?
c/c++有着丰富的模板库,such as<map><stack><queue><ext\pb_ds\priority_queue.hpp>...真是喜闻乐见啊,但是谁知道呢,在C的内心最深处,还隐藏者那些不能说的秘密。
SECRET _1
(数组魔法,规整的数组有一颗癫狂的心)
我们来看这样的几行代码
1 for(int i=1;i<=n;i++) scanf("%d",&a[i]); 2 for(int i=1;i<=n;i++) printf("%d ",a[i]);
舒服吧?就是这么牛(啥?),这就是今天的全部内容了,谢谢大家(滚回来继续说)
//input 1 2 3 4 5 //则output 1 2 3 4 5
这个你在不懂说不过去了吧,作为一个(BLABLABLA)。。。我们应该快速进入正题。
我们还有一个代码,如下。
for(int i=1;i<=n;i++) printf("%d ",i[a]);
//则output 1 2 3 4 5
天哪!是我的编译器出问题了吗?
其实不然,这涉及到数组指针的操作。
在代码片段1中,有
printf("%d",a[i]) //实际上数组a[]也可以视作是一个int*类型的a //此时的操作等价于 printf("%d",(a+i));
那么不就好说了吗?==》i[a]==(i+a)==(a+i)==a[i];
SECRET_2
(恐怖的符号趋向于)
(恐怖故事气氛)然而在许多年以前,还有一个恐怖的符号!他的名字叫趋向于,关于他的记载,大概是这样的。
他有一个普通的面貌:“<--”这就是那位大魔头!
他大概是这样被使用的。
1 cin>>n; 2 while(0<--n){ 3 cout<<n<<" "; 4 }
我们有
//input 5 //output 4 3 2 1
强大吧?
据说他还有一个兄弟,快速趋向于
1 cin>>n; 2 while(0<----n){ 3 cout<<n<<" "; 4 }
和一个强壮的父亲,加速趋向于
1 cin>>n; 2 while(0<------n){ 3 cout<<n<<" "; 4 }
还有一个神话般的叔祖,光速趋向于
1 cin>>n; 2 while(0<----------n){ 3 cout<<n<<" "; 4 }
他们一辈人的志向是成为一名神速力(Speed Force,DC Comics,Flash)趋向于
cin>>n; while(0<--------------------------------------------------n){ cout<<n<<" "; }
哈哈说了这么多原来大家都被我骗了!
趋向于“<--”的第一用法等价于:
cin>>n; n--; while(n>0){ cout<<n<<" "; --n; } //哈哈哈哈被骗了吧?
SECRET_3
(编译器中存在的bug)
我们有代码:
int n=3 cout<<"sizeof(n)="<<sizeof(n++)<<"\n"<<n;
结果居然不是
4
5
而是
4
4
为什么呢?
奇了怪了。
Edit until 2015.5.30->19:19
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。