当前位置:首页 > 原创 > 振南技术干货集(风云录)
[导读]以上的例子可能有些鸡肋,“一个if能搞定的事情,我为什么要用for?”,没错。我们这里主要是为了解释for循环的灵活用法。深入理解了它的本质,有助于我们在实际开发中让工作事半功倍,以及看懂别人的代码。

出神入化的for循环

for循环我们再熟悉不过了,通常我们使用它都是中规中矩的,如下例:

int i;

for(i=0;i<100;i++)

{...}

但是如果我们对for循环的本质有更深刻的理解的话,就可以把它用得出神入化。

for后面的括号中的东西我称之为“循环控制体”,分为三个部分,如下图所示。

图2.6 for循环的“循环控制体”

B、C三个部分,其实随意性很大,可以是任意一个表达式。所以,我们可以这样写一个死循环:

for(1;1;1) //1本身就是一个表达式:常量表达式

{

...

}

当然,我们经常会把它简化成:

for(;;)

{

...

}

既然循环控制体中的A只是在循环开始前作一个初始化的操作,那我这样写应该也没毛病:

int i=0;

for(printf("Number:\r\n");i<10;i++)

{

printf(" %d\r\n",i);

}

B是循环执行的条件,而C是循环执行后的操作,那我们就可以把一个标准的if语句写成for的形式,而实现同样的功能:

if(strstr("hello world!","abc"))

{

printf("Find Sub-string");

}

char *p;

for(p=strstr("hello world!","abc");p;p=NULL)

{

printf("Find Sub-string");

}

以上的例子可能有些鸡肋,“一个if能搞定的事情,我为什么要用for?”,没错。我们这里主要是为了解释for循环的灵活用法。深入理解了它的本质,有助于我们在实际开发中让工作事半功倍,以及看懂别人的代码。

以下我再列举几个for循环灵活应用的例子,供大家回味。

例1:

char *p;

for(p="abcdefghijklmnopqrstuvwxyz";printf(p);p++) printf("\r\n");

提示:printf我们太熟悉了,但是有几个人知道printf是有返回值的?输出应该是怎样的?

例2:

char *p;

unsigned char n;

for(p="ablmnl45ln",n=0;((*p=='l')?(n++):0),*p;p++);

提示:还记得C语言中的三目运算和逗号表达式吗?n应该等于几?

例3:

unsigned char *index="C[XMZA[C[NK[RDEX@";

char *alphabet="EHUIRZWXABYPOMQCTGSJDFKLNV ";

int i=0;

for(;(('@'!=index[i])?1:(printf("!!Onz\r\n"),0));i++)

{printf("%c",alphabet[index[i]-'A']);}

提示:天书模式已开启。如果看不懂,你可能会错过什么哦!

声明:该篇文章为本站原创,未经授权不予转载,侵权必究。
换一批
延伸阅读

近日,2024中关村论坛年会发布了10项重大科技成果名单,其中“转角氮化硼光学晶体原创理论与材料”备受关注。

关键字: 激光

虽然当前内外部市场环境中仍存在着诸多不确定性风险,但半导体行业已经开始逐渐走出谷底,即将开启新一轮的上行周期。而紫光国微,已经为迎接产业复苏做好了准备。

关键字: 紫光国微 特种集成电路 安全芯片

继“特斯拉开启万人大裁员”之后,如今又一家车企扛不住了!

关键字: 电动汽车

2024年4月25日,神经元于北京车展中国芯展区重磅发布了其高性价比车规级Switch芯片“KD6610”。北京神经元网络技术有限公司董事长薛百华针对这两款新品进行了精彩分享。一汽股权投资有限公司战略及投资研究室主任李炜...

关键字: 神经元 Switch KD6610 车规级 TSN

从无处不在的射频技术到为无处不在的应用赋能,Qorvo凭借广泛的产品矩阵和差异化的技术优势,正在满足市场对高功率、高能效、高性能系统的应用需求。

关键字: Qorvo 射频 Wi-Fi 7 BMS 压感交互

当地时间4月22日,ASML宣布已与荷兰埃因霍温市政府签署了一份意向书,计划在该市的北部机场附近进行扩建,届时将可容纳2万名新员工。这或许意味着,其搬离荷兰的计划也将告一段落了。

关键字: ASML 光刻机

上个月,爱立信刚刚传出“对中国区业务进行战略调整,研发岗大面积裁员”的消息。这几天,就有员工确认,爱立信“核心网”成为了此次裁员的“重灾区”。

关键字: 爱立信 通信

SAP(思爱普)近日发出的裁员计划,不仅涉及全球范围内约8000个职位,更是在中国区造成了近1500名正式员工和合同工不续的情况。

关键字: 软件 互联网

近日,Arm推出了Arm® Ethos™-U85神经网络处理器(NPU)和Arm Corstone™-320物联网参考设计平台,旨在满足海量的数据处理和大规模计算,加速推进边缘AI的发展进程。

关键字: ARM

“RISC-V相比较Arm的竞争优势,在AI、数据中心高速运算和高效能运算这些领域,现在来说的话都有深度嵌入。但是相对于像车用MCU以及甚至手机AP这部分,假以时日,RISC-V也会对Arm产生非常大的一个威胁。”

关键字: 晶心科技 Andes RISC-V 向量处理器 矢量计算
关闭