|
根据堆栈溢出网站上内容改编成一道C语言测试题,全部做正确很难啊,虽然题目看上去很简单。
C++的更多,Javascript的最多,简直就是不可理喻!
C++版的:
C++1x Lambda表达式:
[] (int x) { std::cout << x << std::endl; } ();
调用:[](){}();[]{[]{}();}();
晕菜了没有?还好,现在使用C++1x特性的人还不多。
Javascript版的:
'5'+3 = '53'
'5'-3 = '2'
这个才是超级坑爹的。
还有,2=[2]=[[[2]]]
好了,相信你已经晕的差不多了,现在上正餐,C语言版。没有上面的那么变态,不过也够喝一壶的了。因为C++兼容C89(不兼容C99),下面的内容都是同样适用于C++的。
#include "stdio.h"
int Array[] = {
123, 456, 789, 012, 345, 678, 901, 234, 567, 890, //Array[3] = ?
};
typedef char c;
int main(int argc, char* argv[])
{
{
int i;
for(i = sizeof(Array) / sizeof(int); i --> 0; ){ // -->在这里很直观啊
printf("%d\n", Array);
}
i = 0;
Array[i++] = i; //到底是先赋值还是先自增?
printf("i:%d Array: %d %d %d\n", i, 0[Array], 1[Array], 2[Array], 3[Array]); //数组访问有问题吗,有问题吗?
}
printf("LOL?" "?" "!LOL\n"); //结果是多少
printf("LOL" "??!" "LOL\n"); //结果又是多少
http://www.ourdev.cn 直接输入URL,不需要注释
{ //代码都变成天书了
struct c {c c;} c;
c: c.c = 'c';
printf( "%c\n", c.c);
}
{ //奇怪的sizeof行为,结果是什么
int x = 1;
int sz = sizeof(x++); //sizeof带括号
char a[] = "Hello";
int s1 = sizeof a; //sizeof不带括号
//int ss = sizeof int; //为什么就不行呢?
int s2 = sizeof ("Hello", a);
printf("%d %d %d\n", x, s1, s2);
}
return 0;
}
附上原始出处:http://stackoverflow.com/questions/1995113/strangest-language-feature?page=1&tab=votes#tab-top |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|