UOJ Logo qwertt123的博客

博客

论C/C++的神奇操作

2020-09-26 15:19:37 By qwertt123

① 超级注释

#if 0

注释

#endif

②swap不需要中间变量

#define swap(a,b){a=a^b;b=a^b;a=a^b}

③main之前调用函数

不是众所周知的

class a{public:a(){cout<<a;}};a b;

#include <iostream>
int t=(5,6,printf("4"));
int main(){
    return 0;
}

④2^1000

计算 2^1000 的简洁代码

long long a=0x7e7ll<<52;

⑤ 充分利用builtins函数

#define builtin(x) __builtin_##x
main(){builtin(printf)("hello")}

⑥ core dump

(c语言)

main=0;

这个是至今我发现的最短的能够运行的代码了 ~虽然有一堆警告~

评论

qwertt123
@qwertt123
WrongAnswer
补充一个,计算 $2^{1000}$ 只需不到60B代码: long long a=0x7e7ll<<52; printf("%.0f",*(double*)&a);
vfleaking
怀疑是因为博客排版问题导致这么多差评。。好心地帮忙调了下排版
aurora
%%%即使 ```cpp #ifndef 0 这是中文 #endif ``` 也可以?!
aurora
MARKDOWN炸了? Ps.我编译通过了上面那段话(加个int main(){return 0;})
FZzzz
看来并不是排版问题(
QAQ2519
有个问题,那个异或版本的swap,如果两个数字相同,会发生不可想象的后果
jinzhouyue
回复@QAQ2519 : 没有啊,举个简单的例子: swap(3,3) a = 3(10)=11(2) 3(10)=11(2) a=a ^ b ,a ^ b=0 , a=0 b=a ^ b ,a ^ b=3, (a已经变成0) b=3不变 a=a ^ b ,a ^ b=3, (a还没变回3) a=3恢复 结果a=3,b=3,swap正确
2021zll
更短的 C 语言可编译代码: ```c main; ```
wlc2
###好啊 ***good***

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。