C语言空语句的作用
此题出自谭浩强张基温C语言程序设计教程第三版239页#include"stdio.h"#defineN2#defineM5intmain(){charc[N][M]={"...
此题出自 谭浩强 张基温C语言程序设计教程第三版 239页 #include "stdio.h"
#define N 2
#define M 5
int main()
{
char c[N][M]={"1357","2468"},*p[2];
int i,j,k=0;
for(i=0;i<N;i++) p[i]=c[i];
for(i=0;j<N;i++)
for(j=0;p[i][j]>'\0' && p[i][j]<='9';j+=2);
k=10*k+p[i][j]-'\0';
printf("%d\n",k);
return 0;
} 此程序中,空语句的作用是什么? 为什么去掉分号";"结果就会出错呢?
for(j=0;p[i][j]>'\0' && p[i][j]<='9';j+=2); 表达的什么意思呢 谢谢! 展开
#define N 2
#define M 5
int main()
{
char c[N][M]={"1357","2468"},*p[2];
int i,j,k=0;
for(i=0;i<N;i++) p[i]=c[i];
for(i=0;j<N;i++)
for(j=0;p[i][j]>'\0' && p[i][j]<='9';j+=2);
k=10*k+p[i][j]-'\0';
printf("%d\n",k);
return 0;
} 此程序中,空语句的作用是什么? 为什么去掉分号";"结果就会出错呢?
for(j=0;p[i][j]>'\0' && p[i][j]<='9';j+=2); 表达的什么意思呢 谢谢! 展开
2个回答
展开全部
空语句一般有以下几个用途:
1.纯粹消耗CPU时间,起到延时的作用,但是注意一下,"雨落深山"说的有问题的,在嵌入式系统中一般不会这么用,原因如下:
对于嵌入式系统来讲,不论是哪种系统,一般下位芯片级的时间单位为Tick,这样的处理单位对于Tick来说太粗略了。
但是在嵌入式系统中,有一种情况下会用到:
不需要很高的精确度,并且要避免引起Task切替的延迟处理时,有时会这么用。因为起计时器进行延迟的话,超时处理会引起调度进程的轮循,出现Task切替。
2.为了程序的结构清楚,可读性好,以后扩充新功能方便。有些公司的编码规范要求,对于if/胡扮渣else语句等,如果分支不配对的话,需要用空语句进行配对,一般日系企业这么要求的裤悄比较多。
例如:
正常的这么做就行:
if(XXX)
{
XXXXX
}
但是编码规范要求,必须这么写
if(XXX)
{
XXXXX
}
else
{
;
}
3. 对于某些大型的软件项目,特别是一些嵌入式项目,处于自动化测试的需要,要求必须进行语句缺世(例如,if/else语句)的配对。
在进行代码静态解析,单体测试Case抽出的时候,为了保证全路径覆盖,很多专业的高端自动测试工具,会建议进行语句(例如,if/else语句)的配对。此时对于一些不完备的分支,就会用空语句补全。
1.纯粹消耗CPU时间,起到延时的作用,但是注意一下,"雨落深山"说的有问题的,在嵌入式系统中一般不会这么用,原因如下:
对于嵌入式系统来讲,不论是哪种系统,一般下位芯片级的时间单位为Tick,这样的处理单位对于Tick来说太粗略了。
但是在嵌入式系统中,有一种情况下会用到:
不需要很高的精确度,并且要避免引起Task切替的延迟处理时,有时会这么用。因为起计时器进行延迟的话,超时处理会引起调度进程的轮循,出现Task切替。
2.为了程序的结构清楚,可读性好,以后扩充新功能方便。有些公司的编码规范要求,对于if/胡扮渣else语句等,如果分支不配对的话,需要用空语句进行配对,一般日系企业这么要求的裤悄比较多。
例如:
正常的这么做就行:
if(XXX)
{
XXXXX
}
但是编码规范要求,必须这么写
if(XXX)
{
XXXXX
}
else
{
;
}
3. 对于某些大型的软件项目,特别是一些嵌入式项目,处于自动化测试的需要,要求必须进行语句缺世(例如,if/else语句)的配对。
在进行代码静态解析,单体测试Case抽出的时候,为了保证全路径覆盖,很多专业的高端自动测试工具,会建议进行语句(例如,if/else语句)的配对。此时对于一些不完备的分支,就会用空语句补全。
2013-07-26
展开全部
此题中for(j=0;p[i][j]>'\0' && p[i][j]<='9';j+=2); 此句中的循环执行的语句是空语句,如果去掉分号的话,循环热行的语句就变成了k=10*k+p[i][j]-'\0'; 当然这样所得的K值就会不同,输出的答案也就有差异了。此题中空语句的作用就是起到延时的作用
空语句一般有以下几个用途:
1.纯粹消耗CPU时间,起到延时的作用,指闭但是注意一下,"雨落深山"说的有问题的,在嵌入式系统中一般不会这么用,原因如下:
�9�9对于嵌入式系统来讲,不论是哪种系统,一般下位芯片级的时间单位为Tick,这样的处理单位对于Tick来说太粗略了。
但是在嵌入式系统中,有一种情况下会用到:
�9�9不需要很高的精确度,并且要避免引起Task切替的延迟处理时,有时会这么用。因为起计时器进行延迟的话,超敏前时处理会引起调度进程的轮循,出现Task切替。
2.为了程序的结构清楚,可读性好,以后扩充新功能方便。有些公司的编码规范要求,对于if/else语句等,如果分支不配对的话,需要用空语句进行配对,一般日系企业这么要求的比较多。
例如:
正常的这么做就行:
if(XXX)
{
XXXXX
}
但是编码规范要求,必须这么写
if(XXX)
{
XXXXX
}
else
{
;
}
3. 对于某些大型的软件项目,特别是一些嵌入式项目,处于自动化测试的需要,要求必须进行语句(例如桥逗清,if/else语句)的配对。
在进行代码静态解析,单体测试Case抽出的时候,为了保证全路径覆盖,很多专业的高端自动测试工具,会建议进行语句(例如,if/else语句)的配对。此时对于一些不完备的分支,就会用空语句补全。
空语句一般有以下几个用途:
1.纯粹消耗CPU时间,起到延时的作用,指闭但是注意一下,"雨落深山"说的有问题的,在嵌入式系统中一般不会这么用,原因如下:
�9�9对于嵌入式系统来讲,不论是哪种系统,一般下位芯片级的时间单位为Tick,这样的处理单位对于Tick来说太粗略了。
但是在嵌入式系统中,有一种情况下会用到:
�9�9不需要很高的精确度,并且要避免引起Task切替的延迟处理时,有时会这么用。因为起计时器进行延迟的话,超敏前时处理会引起调度进程的轮循,出现Task切替。
2.为了程序的结构清楚,可读性好,以后扩充新功能方便。有些公司的编码规范要求,对于if/else语句等,如果分支不配对的话,需要用空语句进行配对,一般日系企业这么要求的比较多。
例如:
正常的这么做就行:
if(XXX)
{
XXXXX
}
但是编码规范要求,必须这么写
if(XXX)
{
XXXXX
}
else
{
;
}
3. 对于某些大型的软件项目,特别是一些嵌入式项目,处于自动化测试的需要,要求必须进行语句(例如桥逗清,if/else语句)的配对。
在进行代码静态解析,单体测试Case抽出的时候,为了保证全路径覆盖,很多专业的高端自动测试工具,会建议进行语句(例如,if/else语句)的配对。此时对于一些不完备的分支,就会用空语句补全。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询