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

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

3天内不再提示

c语言中一些花里胡哨的写法

strongerHuang 来源:嵌入式Linux 作者:嵌入式Linux 2020-09-25 14:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

转自:嵌入式Linux

我觉得这是一个送分题,奈何知乎人才太多了,给出了各种古怪的写法,如果是做项目的话,我比骄建议一些正常的写法,就是大家都能看得懂的,不要搞什么花里胡哨,不过你要是交流的话,既然是交流,我不觉得要多正规,即使你的观点有问题,我觉得也可以拿出来说说,毕竟是交流,各抒己见,发表自己的观点是最重要的。

---- 为什么不建议大家花里胡哨

我觉得花里胡哨之前首先是你基础非常好了再去花里胡哨,不要自己很多基础的东西还搞不清楚就去花里胡哨。

---- 看这个代码,题外话

看看基础搞不明白的杀伤有多大。

voidstart_f(intfirst_start) { chartime_buf[512]; charbuf[512]; if(!first_start) { sprintf(time_buf,"%s",get_time()); intlen=strlen(time_buf); time_buf[len-1]=0; printf("time_buf:%s ",time_buf); } }

这个是在网上看到的一个代码,比较典型的基础不牢靠,对strlen 理解不够。

常规解题代码

我觉得对于这个题目,使用for是非常常规的思考方式,所以我看了所有的回答之后,写了一个常规的代码。

---- 代码如下

#include"stdio.h" voidmain(void) { inti=0; for(i=1;i<=100;i++)  {   printf("%d ",i);  }  for(i=99;i>=1;i--) { printf("%d",i); } }

---- 代码输出

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100999897969594939291908988878685848382818079787776757473727170696867666564636261605958575655545352515049484746454443424140393837363534333231302928272625242322212019181716151413121110987654321 -------------------------------- Processexitedafter0.04664secondswithreturnvalue2 请按任意键继续...

---- 为什么是 void main ,而不是int main ,题外话

这个是一个知乎留言提到的,很多人也对这个有疑惑,main 的写法有几种,有的被认为是正规的,有的被认为是不正规的。

main是一个函数,既然是一个函数,就遵从函数的规则就好。

所以,这样写输出并没有什么问题

#include char*main() { printf("hhh "); return(char*)NULL; }

我们还要知道比较常见的几种

intmain(intargc,char**argv){} intmain(intargc,char*argv[]){} intmain(void){}

---对于返回值的认知

main 函数是被操作系统调用的,既然是被操作系统调用的,操作系统会判断函数的返回值,通过返回值来判断程序是否正确运行,所以main函数的返回值是有意义的,我示例中的写法并不规范。

对main的解读

比较玄乎的写法

#include"stdio.h" voidfun(intn) { if(n<100)  {   printf("%d ",n);    fun(n+1);  }   printf("%d ",n); } int main(void) {  fun(1);  return 0; }

---- 程序输出

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100999897969594939291908988878685848382818079787776757473727170696867666564636261605958575655545352515049484746454443424140393837363534333231302928272625242322212019181716151413121110987654321 -------------------------------- Processexitedafter0.05336secondswithreturnvalue0 请按任意键继续...

这里涉及到递归,如果没有这个概念的人,脑子可能弯不过来

大概是这样执行顺序的

fun(1) ->fun(2) --->fun(3) ........ ---->fun(99)

---- 把上面的代码修改下

#include"stdio.h" voidfun(intn) { if(n<100)  {   printf("fun(%d) ",n);    fun(n+1);  }   printf("fun(%d) ",n); } int main(void) {  fun(1);  return 0; }

---- 代码输出

fun(1)fun(2)fun(3)fun(4)fun(5)fun(6)fun(7)fun(8)fun(9)fun(10)fun(11)fun(12)fun(13)fun(14)fun(15)fun(16)fun(17)fun(18)fun(19)fun(20)fun(21)fun(22)fun(23)fun(24)fun(25)fun(26)fun(27)fun(28)fun(29)fun(30)fun(31)fun(32)fun(33)fun(34)fun(35)fun(36)fun(37)fun(38)fun(39)fun(40)fun(41)fun(42)fun(43)fun(44)fun(45)fun(46)fun(47)fun(48)fun(49)fun(50)fun(51)fun(52)fun(53)fun(54)fun(55)fun(56)fun(57)fun(58)fun(59)fun(60)fun(61)fun(62)fun(63)fun(64)fun(65)fun(66)fun(67)fun(68)fun(69)fun(70)fun(71)fun(72)fun(73)fun(74)fun(75)fun(76)fun(77)fun(78)fun(79)fun(80)fun(81)fun(82)fun(83)fun(84)fun(85)fun(86)fun(87)fun(88)fun(89)fun(90)fun(91)fun(92)fun(93)fun(94)fun(95)fun(96)fun(97)fun(98)fun(99)fun(100)fun(99)fun(98)fun(97)fun(96)fun(95)fun(94)fun(93)fun(92)fun(91)fun(90)fun(89)fun(88)fun(87)fun(86)fun(85)fun(84)fun(83)fun(82)fun(81)fun(80)fun(79)fun(78)fun(77)fun(76)fun(75)fun(74)fun(73)fun(72)fun(71)fun(70)fun(69)fun(68)fun(67)fun(66)fun(65)fun(64)fun(63)fun(62)fun(61)fun(60)fun(59)fun(58)fun(57)fun(56)fun(55)fun(54)fun(53)fun(52)fun(51)fun(50)fun(49)fun(48)fun(47)fun(46)fun(45)fun(44)fun(43)fun(42)fun(41)fun(40)fun(39)fun(38)fun(37)fun(36)fun(35)fun(34)fun(33)fun(32)fun(31)fun(30)fun(29)fun(28)fun(27)fun(26)fun(25)fun(24)fun(23)fun(22)fun(21)fun(20)fun(19)fun(18)fun(17)fun(16)fun(15)fun(14)fun(13)fun(12)fun(11)fun(10)fun(9)fun(8)fun(7)fun(6)fun(5)fun(4)fun(3)fun(2)fun(1)

重点在于只有if 判断为假后,才结束递归,但是递归不能无限大,太大了会撑爆栈空间的哦

递归的文章

C 语言,你真的懂递归了吗?

比如这样

再看看一个高赞的奇葩写法

#include intmain(){ printf("1"); printf(""); printf("2"); printf(""); printf("3"); printf(""); printf("4"); printf(""); printf("5"); printf(""); printf("6"); printf(""); printf("7"); printf(""); printf("8"); printf(""); printf("9"); printf(""); printf("10"); printf(""); printf("11"); printf(""); printf("12"); printf(""); printf("13"); printf(""); printf("14"); printf(""); printf("15"); printf(""); printf("16"); printf(""); printf("17"); printf(""); printf("18"); printf(""); printf("19"); printf(""); printf("20"); printf(""); printf("21"); printf(""); printf("22"); printf(""); printf("23"); printf(""); printf("24"); printf(""); printf("25"); printf(""); printf("26"); printf(""); printf("27"); printf(""); printf("28"); printf(""); printf("29"); printf(""); printf("30"); printf(""); printf("31"); printf(""); printf("32"); printf(""); printf("33"); printf(""); printf("34"); printf(""); printf("35"); printf(""); printf("36"); printf(""); printf("37"); printf(""); printf("38"); printf(""); printf("39"); printf(""); printf("40"); printf(""); printf("41"); printf(""); printf("42"); printf(""); printf("43"); printf(""); printf("44"); printf(""); printf("45"); printf(""); printf("46"); printf(""); printf("47"); printf(""); printf("48"); printf(""); printf("49"); printf(""); printf("50"); printf(""); printf("51"); printf(""); printf("52"); printf(""); printf("53"); printf(""); printf("54"); printf(""); printf("55"); printf(""); printf("56"); printf(""); printf("57"); printf(""); printf("58"); printf(""); printf("59"); printf(""); printf("60"); printf(""); printf("61"); printf(""); printf("62"); printf(""); printf("63"); printf(""); printf("64"); printf(""); printf("65"); printf(""); printf("66"); printf(""); printf("67"); printf(""); printf("68"); printf(""); printf("69"); printf(""); printf("70"); printf(""); printf("71"); printf(""); printf("72"); printf(""); printf("73"); printf(""); printf("74"); printf(""); printf("75"); printf(""); printf("76"); printf(""); printf("77"); printf(""); printf("78"); printf(""); printf("79"); printf(""); printf("80"); printf(""); printf("81"); printf(""); printf("82"); printf(""); printf("83"); printf(""); printf("84"); printf(""); printf("85"); printf(""); printf("86"); printf(""); printf("87"); printf(""); printf("88"); printf(""); printf("89"); printf(""); printf("90"); printf(""); printf("91"); printf(""); printf("92"); printf(""); printf("93"); printf(""); printf("94"); printf(""); printf("95"); printf(""); printf("96"); printf(""); printf("97"); printf(""); printf("98"); printf(""); printf("99"); printf(""); printf("100"); printf(""); printf("99"); printf(""); printf("98"); printf(""); printf("97"); printf(""); printf("96"); printf(""); printf("95"); printf(""); printf("94"); printf(""); printf("93"); printf(""); printf("92"); printf(""); printf("91"); printf(""); printf("90"); printf(""); printf("89"); printf(""); printf("88"); printf(""); printf("87"); printf(""); printf("86"); printf(""); printf("85"); printf(""); printf("84"); printf(""); printf("83"); printf(""); printf("82"); printf(""); printf("81"); printf(""); printf("80"); printf(""); printf("79"); printf(""); printf("78"); printf(""); printf("77"); printf(""); printf("76"); printf(""); printf("75"); printf(""); printf("74"); printf(""); printf("73"); printf(""); printf("72"); printf(""); printf("71"); printf(""); printf("70"); printf(""); printf("69"); printf(""); printf("68"); printf(""); printf("67"); printf(""); printf("66"); printf(""); printf("65"); printf(""); printf("64"); printf(""); printf("63"); printf(""); printf("62"); printf(""); printf("61"); printf(""); printf("60"); printf(""); printf("59"); printf(""); printf("58"); printf(""); printf("57"); printf(""); printf("56"); printf(""); printf("55"); printf(""); printf("54"); printf(""); printf("53"); printf(""); printf("52"); printf(""); printf("51"); printf(""); printf("50"); printf(""); printf("49"); printf(""); printf("48"); printf(""); printf("47"); printf(""); printf("46"); printf(""); printf("45"); printf(""); printf("44"); printf(""); printf("43"); printf(""); printf("42"); printf(""); printf("41"); printf(""); printf("40"); printf(""); printf("39"); printf(""); printf("38"); printf(""); printf("37"); printf(""); printf("36"); printf(""); printf("35"); printf(""); printf("34"); printf(""); printf("33"); printf(""); printf("32"); printf(""); printf("31"); printf(""); printf("30"); printf(""); printf("29"); printf(""); printf("28"); printf(""); printf("27"); printf(""); printf("26"); printf(""); printf("25"); printf(""); printf("24"); printf(""); printf("23"); printf(""); printf("22"); printf(""); printf("21"); printf(""); printf("20"); printf(""); printf("19"); printf(""); printf("18"); printf(""); printf("17"); printf(""); printf("16"); printf(""); printf("15"); printf(""); printf("14"); printf(""); printf("13"); printf(""); printf("12"); printf(""); printf("11"); printf(""); printf("10"); printf(""); printf("9"); printf(""); printf("8"); printf(""); printf("7"); printf(""); printf("6"); printf(""); printf("5"); printf(""); printf("4"); printf(""); printf("3"); printf(""); printf("2"); printf(""); printf("1"); printf(""); return0; }

原文标题:c语言各种古怪的写法

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

责任编辑:haq

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

    关注

    183

    文章

    7649

    浏览量

    146401
  • 编程
    +关注

    关注

    90

    文章

    3725

    浏览量

    97527

原文标题:c语言各种古怪的写法

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    c语言中的代码优化

    。 第三招:数学方法解决问题   如今咱们演绎高效C语言编写的第二招--采用数学方法来解决问题。数学是计算机之母,没有数学的依据和基础,就没有计算机的发展,因此在编写程序的时候,采用一些数学方**对程序
    发表于 01-12 09:45

    请问C语言中整形溢出的解决方法有哪些?

    C语言中整形溢出的解决方法有哪些?
    发表于 12-29 07:33

    单片机c语言中定义字节怎么定义?

    定义位可以用***it但是定义字节呢?还有就是比如汇编中的DPTR的DPH和DPL在c语言中怎样定义的呢?
    发表于 12-29 06:32

    请问C语言中整形溢出会产生哪些异常行为?

    C语言中整形溢出会产生哪些异常行为?
    发表于 12-26 07:05

    请问C语言中整形溢出对哪些应用场景影响较大?

    C语言中整形溢出对哪些应用场景影响较大
    发表于 12-24 08:24

    C语言C++的区别及联系

    创建源文件时什么都不给,默认是.cpp。 3、返回值 C语言中,如果个函数没有指定返回值类型,默认返回int类型;C++中,如果个函
    发表于 12-24 07:23

    C语言中一些令人震惊的结构介绍

    C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么? int a = 5, b = 7, c; c = a+++b;
    发表于 12-23 08:15

    Typedef在C语言中的应用

    Typedef 在C语言中频繁用以声明个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考下下面的例子: #define dPS struct s * type
    发表于 12-22 13:53

    C语言中可以嵌套汇编语言吗?

    请问C语言中可以嵌套汇编语言吗?
    发表于 12-15 08:14

    C语言中除数为0属于什么错误

    在源程序的编写时往往会出一些错误,这些错误大致分为静态错误和动态错误两类。 所谓动态错误:逻辑错误,他们发生在程序运行的时候,如算法逻辑上的错误。动态错误也被称为动态语义错误,如题目中给出的除数为
    发表于 12-08 06:38

    C语言的分支结构介绍

    1.简单if语句 C语言中的分支结构语句中的if条件语句。 简单if语句的基本结构如下: 代码语言:javascript if(表达式) { 执行代码块; } 其语义是:如果表达式的值为真,则执行其后的语句,否则不执
    发表于 11-25 07:48

    C语言和单片机C语言有什么差异

    有些扩展,及一些特殊写法C51扩展的 data xdata bit sbit类的,还有一些中断程序
    发表于 11-14 07:55

    对浮点指令扩展中一些问题的解决与分享

    出现无法写的情况。 结论 以上就是我们组在扩展浮点指令中出现的一些问题,这些问题总体上归结于对蜂鸟的代码没有整体性的把握,对内容的掌握程度还不够。在后续的工作中应注意理清功能的整体架构而对所有的相关部分进行修改。
    发表于 10-24 11:47

    CICC2033:关于C语言仿真的一些说明

    C语言运行说明 操作说明(以helloworld为例) 1、在SDK环境下写好C语言相关代码。 最简单的写法为根据已有demo进行更改
    发表于 10-21 14:18

    Windows环境下32位汇编语言中文资料

    电子发烧友网站提供《Windows环境下32位汇编语言中文资料.rar》资料免费下载
    发表于 06-30 15:14 0次下载