0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

你有见到过最美的c语言代码吗?

FPGA之家 来源:技术让梦想更伟大 作者:李肖遥 2021-04-04 11:56 次阅读

我们都知道雷军雷布斯说过当时他写的代码像诗一样优美,那已经是三十年前的汇编时代了,那么现在你有见到过最美的c语言代码吗?

我在网上收集了一些代码,供大家赏诗,其中我本人最喜欢最后一个。

这是我找到最多的答案,估计是程序员想自黑还是说这个带大家步入了代码的世界。

#include《stdio.h》

int main(void)

{

printf(“Hello,World”);

return 0;

}

代码的运行结果是代码本身

char* f = “char * f = %c%s%c;main(){printf(f,34,f,34,10);}%c”;

main()

{

printf(f,34,f,34,10);

}

编译结果如下:

485e8712-8ecb-11eb-8b86-12bb97331649.png

汇编留下来的小技巧

#define STATE_TABLE

ENTRY(STATE0, func0)

ENTRY(STATE1, func1)

ENTRY(STATE2, func2)

。..

ENTRY(STATEX, funcX)

enum

{

#define ENTRY(a,b) a,

STATE_TABLE

#undef ENTRY

NUM_STATES

};

p_func_t jumptable[NUM_STATES] =

{

#define ENTRY(a,b) b,

STATE_TABLE

#undef ENTRY

};

#define ENTRY(a,b) static void b(void);

STATE_TABLE

#undef ENTRY

用来获取函数中的可变参数,具体用法可参加printf的源码实现

typedef char * va_list;

#define _INTSIZEOF(x) ((sizeof(x)+ sizeof(int)- 1) & ~(sizeof(int) - 1))

#define va_start(ap,v) ( ap= (va_list)&v+ _INTSIZEOF(v) )

#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )

#define va_end(ap) ( ap = (va_list)0 )

这是算64位里有多少个bit是1的

const uint64_t m1 = 0x5555555555555555; //binary: 0101.。.

const uint64_t m2 = 0x3333333333333333; //binary: 00110011.。

const uint64_t m4 = 0x0f0f0f0f0f0f0f0f; //binary: 4 zeros, 4 ones 。..

const uint64_t m8 = 0x00ff00ff00ff00ff; //binary: 8 zeros, 8 ones 。..

const uint64_t m16 = 0x0000ffff0000ffff; //binary: 16 zeros, 16 ones 。..

const uint64_t m32 = 0x00000000ffffffff; //binary: 32 zeros, 32 ones

int popcount64a(uint64_t x)

{

x = (x & m1 ) + ((x 》》 1) & m1 ); //put count of each 2 bits into those 2 bits

x = (x & m2 ) + ((x 》》 2) & m2 ); //put count of each 4 bits into those 4 bits

x = (x & m4 ) + ((x 》》 4) & m4 ); //put count of each 8 bits into those 8 bits

x = (x & m8 ) + ((x 》》 8) & m8 ); //put count of each 16 bits into those 16 bits

x = (x & m16) + ((x 》》 16) & m16); //put count of each 32 bits into those 32 bits

x = (x & m32) + ((x 》》 32) & m32); //put count of each 64 bits into those 64 bits

return x;

}

以上代码来自www.wikipedia.org

链接:

https://en.wikipedia.org/wiki/Hamming_weight#Efficient_implementation

kernel 链表 list 操作代码的一部分

linux kernel中最重要的迭代方法,很巧妙,通过一个结构体的成员指针获取结构体本身的指针,一个计算偏移,一个计算首地址,Linux内核或驱动开发常遇见。

#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)-》MEMBER)

#define container_of(ptr, type, member) ({

const typeof(((type *)0)-》member)*__mptr = (ptr);

(type *)((char *)__mptr - offsetof(type, member));})

#define list_entry(ptr, type, member)

container_of(ptr, type, member)

linux里面对链表的操作见到过DO_SOMETHING 只是我做例子取的一个macro名字;do_something() 并不是一行,可能是很多行,很多处理逻辑。

#define DO_SOMETHING() do

{

do_something();

}while(0)

DO_SOMETHING();

首届IOCCC比赛中的一个代码

由于年代久远,看不到这段代码到底有什么效果,于是写了个可以在windows下编译运行的代码。

short main[] = {

277, 04735, -4129, 25, 0, 477, 1019, 0xbef, 0, 12800,

-113, 21119, 0x52d7, -1006, -7151, 0, 0x4bc, 020004,

14880, 10541, 2056, 04010, 4548, 3044, -6716, 0x9,

4407, 6, 5568, 1, -30460, 0, 0x9, 5570, 512, -30419,

0x7e82, 0760, 6, 0, 4, 02400, 15, 0, 4, 1280, 4, 0,

4, 0, 0, 0, 0x8, 0, 4, 0, ‘,’, 0, 12, 0, 4, 0, ‘#’,

0, 020, 0, 4, 0, 30, 0, 026, 0, 0x6176, 120, 25712,

‘p’, 072163, ‘r’, 29303, 29801, ‘e’

};

不用加头文件就可以编译的,这段代码主要是弹出一个消息框做演示如下

double main[] = {

-2.4701240043063294e-255,7.0200995176637059e-269,

1.7039916353015322e-248,

2.0829486981857065e-017,3.1678173412277654e-152,

1.4561366983095816e-300,

2.8652426426650795e+161,1.1610765287701034e+200,

-1.1126115309662626e+034,

2.5955200557858144e-303,5.3745432333120549e+196,

3.2709387181673304e+228,

-7.1518888970417846e+161,-1.7905983542158763e+305,

1.0622411385586801e-321

};

也有说到菲波那契

int fibonacci( int n )

{

return fib_iter( 0, 1, n );

}

int fib_iter( int a, int b, int n )

{

return n ? fib_iter( b, a+b, n-1 ) : b;

}

最后这个

#include 《stdio.h》

int main(void)

{

//for ( ; ; );

printf(“I Love You!”);

return 0;

}

如果感兴趣的可以继续深入编译了解一下,抛砖引玉,意在引起大家的兴趣。

原文标题:你见过“最美”的C语言代码是什么?

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7575

    浏览量

    133979
  • 源代码
    +关注

    关注

    96

    文章

    2942

    浏览量

    66435

原文标题:你见过“最美”的C语言代码是什么?

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    hex文件如何查看原c语言代码

    是处理器可以直接执行的指令,而 C 语言代码则是人类可读的高级编程语言代码。 然而,如果你想要从 .hex 文件中获取一些有用的信息或者对程
    的头像 发表于 09-02 10:37 260次阅读

    技术干货驿站 ▏深入理解C语言:掌握常量,让代码更加稳固高效!

    C语言的世界中,常量是一种不可忽视的元素。无论是在编写简单的代码,还是构建复杂的系统,常量都能为的程序带来更高的稳定性和可靠性。在这篇
    的头像 发表于 08-29 13:59 2330次阅读
    技术干货驿站 ▏深入理解<b class='flag-5'>C</b><b class='flag-5'>语言</b>:掌握常量,让<b class='flag-5'>你</b>的<b class='flag-5'>代码</b>更加稳固高效!

    帮你避雷 C语言所谓的短路现象~

    C语言短路现象算是C语言的基础吧,不过有时候代码写得不规范也容易引入一些bug,所以这些操作在工程师实践中尽量少用。虽然下面找的例子比较简单
    的头像 发表于 03-27 08:09 315次阅读
    帮你避雷 <b class='flag-5'>C</b><b class='flag-5'>语言</b>所谓的短路现象~

    plc编程语言c语言的联系 c语言和PLC什么区别

    语言,主要用于开发各种应用程序。尽管PLC编程语言C语言一些相似之处,但它们之间也存在一些明显的区别。 首先,PLC编程
    的头像 发表于 02-05 14:21 3118次阅读

    C语言哪些预处理操作?

    C语言的预处理是在编译之前对源代码进行处理的阶段,它主要由预处理器完成。预处理器是一个独立的程序,它负责对源代码进行一些文本替换和处理,生成经过预处理的
    的头像 发表于 12-08 15:40 469次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>有</b>哪些预处理操作?

    C语言代码的常用技巧

    #和##对于大部分C语言玩得还算比较溜的朋友并不是很陌生,不过能把这两个知识点游刃有余的应用到所在代码中的每个角落,似乎并没有几个人能够做到,学的时候朗朗上口,而编码的时候却抛之脑后。
    的头像 发表于 12-05 09:25 448次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>代码</b>的常用技巧

    如何把c语言源程序变成应用程序

    C语言源程序转变为应用程序可以分为以下几个步骤:编写源代码、编译、链接和运行。在这篇文章中,我将详细介绍这些步骤以及相关的工具和技术。 第一步是编写源代码。在
    的头像 发表于 11-26 09:04 2816次阅读

    c语言源程序main函数的位置

    C语言源程序中的main函数是程序的入口点,它被认为是C语言程序的起点。在执行程序时,操作系统将首先定位到main函数,并从该函数开始执行程序的代码
    的头像 发表于 11-24 10:23 1570次阅读

    c语言代码错误怎么找

    当我们编写C语言代码时,常常会遇到一些错误。这些错误可能是语法错误,逻辑错误或者是运行时错误。无论是什么类型的错误,我们都需要学会如何找到并解决这些问题。 一、语法错误: 语法错误是最常见的错误类型
    的头像 发表于 11-24 10:05 2406次阅读

    c语言怎么把代码全部注释掉

    要将C语言代码全部注释掉,即不让代码被编译和执行,可以使用注释语句来实现。C语言提供两种注释方式
    的头像 发表于 11-22 10:21 4881次阅读

    178个经典c语言代码+算法大全

    电子发烧友网站提供《178个经典c语言代码+算法大全.rar》资料免费下载
    发表于 11-21 10:19 4次下载
    178个经典<b class='flag-5'>c</b><b class='flag-5'>语言</b>源<b class='flag-5'>代码</b>+算法大全

    如何写出高效优美的C语言代码

    电子发烧友网站提供《如何写出高效优美的C语言代码.pdf》资料免费下载
    发表于 11-18 10:55 0次下载
    如何写出高效优<b class='flag-5'>美的</b><b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>代码</b>

    编程语言中一个奇怪的代码结构

    C语言C++等编程语言中,我们常常会遇到一个奇怪的代码结构。
    发表于 11-01 10:24 314次阅读
    编程<b class='flag-5'>语言</b>中一个奇怪的<b class='flag-5'>代码</b>结构

    C语言中ASCII代码是什么意思?

    C语言中ASCII代码是什么意思常见的ASCII代码都需要记吗
    发表于 10-25 07:10

    什么是__attribute__?嵌入式C代码属性怎么定义?

    嵌入式开发,离不开 C 语言C语言中有很多语法会直接或间接影响代码的质量,下面就来讲讲__a
    的头像 发表于 10-13 15:55 4385次阅读
    什么是__attribute__?嵌入式<b class='flag-5'>C</b><b class='flag-5'>代码</b>属性怎么定义?