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语言
    +关注

    关注

    180

    文章

    7591

    浏览量

    135803
  • 编程
    +关注

    关注

    88

    文章

    3562

    浏览量

    93534

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

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

收藏 人收藏

    评论

    相关推荐

    C语言中的socket编程基础

    Socket编程简介 Socket是种通信机制,允许程序之间进行通信。在C语言中,socket编程是网络编程的基础。通过使用socket,程序可以发送和接收数据,实现不同计算机之间的通信
    的头像 发表于 11-01 16:51 198次阅读

    C语言中最常见的宏定义写法

    如果让你用C语言写个宏定义,我相信大部分同学顺手就能写出define。
    的头像 发表于 10-28 11:12 155次阅读

    c语言中从左到右结合怎么看

    :左结合(Left-Associative)或右结合(Right-Associative)。 左结合(Left-Associative) 左结合操作符是指当操作符连续出现时,它们从左向右与操作数结合。这意味着表达式从左到右进行求值。C
    的头像 发表于 08-20 11:42 623次阅读

    介绍C语言中错误处理和异常处理的一些常用的方法和策略

    C语言种低级的、静态的、结构化的编程语言,它没有提供像C++或Java等高级语言中的异常处理
    的头像 发表于 02-28 14:25 577次阅读

    如何解决C语言中的“访问权限冲突”异常?C语言引发异常原因分析

    一些措施来解决和防止其发生。本文将详细介绍C语言中访问权限冲突异常的原因以及解决方法。 、访问权限冲突异常的原因分析 访问权限冲突异常可分为两类:访问私有成员和访问未定义成员。下面分
    的头像 发表于 01-12 16:03 4668次阅读

    C语言中结构体能不能相加

    C语言中,结构体能不能相加?
    的头像 发表于 12-19 17:04 1182次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言中</b>结构体能不能相加

    c语言中逻辑真等价于什么

    C语言中,逻辑真等价于1。逻辑真可以理解为个表达式、语句或条件的结果为真,即满足条件。在计算机科学和编程中,逻辑真在控制流语句、循环和条件语句中具有重要的作用。 逻辑真等价于条件为真的情况。在
    的头像 发表于 11-30 14:10 1919次阅读

    c语言中数据溢出是归0还是归1

    C语言中,数据溢出通常不会自动归0或归1,而是发生未定义行为。这是因为C语言中的数据类型都有定范围,超出该范围的值会导致数据溢出。数据溢
    的头像 发表于 11-30 11:47 2489次阅读

    c语言中decimal的含义

    种特殊的数据类型,用于处理需要更高精度的十进制数。 在C语言中,普通的整数类型(如int)只能表示整数,并且有定的范围限制,而decimal类型可以表示更大范围的数值,并且可以保持高精度。这使得decimal类型在
    的头像 发表于 11-30 10:57 2219次阅读

    c语言中数组怎么定义

    C语言中,数组是种用来存储相同类型元素的数据结构。它可以存储多个元素,并通过个共同的名称来引用这些元素。数组是种很重要的数据结构,可以
    的头像 发表于 11-24 10:11 2783次阅读

    \0在c语言中怎么用

    C语言种广泛使用的程序设计语言,具有高效、简洁和可移植等特点。本文将详尽介绍C语言的基本语法
    的头像 发表于 11-24 09:59 2964次阅读

    scanf在C语言中的作用

    scanf在C语言中的作用  scanf是C语言中的输入函数,用于从标准输入设备(如键盘)读取数据,并将其存储到变量中。它是C
    的头像 发表于 11-23 14:13 1240次阅读

    c语言中顺序结构的基本流程

    的语句组成,这些语句用于完成特定的任务或操作。在C语言中,每个语句都以分号结束,多个语句可以用大括号括起来形成个语句块。在顺序结构中,每个语句都依次执行,按照代码的顺序执行,然后才会执行下
    的头像 发表于 11-22 10:20 908次阅读

    C语言中如何实现注释

    C语言中,注释是用来增加代码可读性和注释过程和功能的文本。C语言中支持两种类型的注释:单行注释和多行注释。 单行注释以双斜杠(//)开始,直到该行结束。该注释语句可以在代码的任何位置
    的头像 发表于 11-22 10:17 1197次阅读

    浅谈C语言中的短路现象

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