最近正在看《高质量程序设计(第二版)》看了一部分其中有几个问题不是很明白:
问题一:P128 for循环变换成while循环
for(循环控制变量的初始化表达式;
循环控制条件表达式;
循环控制变量修改语句)
{语句序列}
变为:
循环控制变量的初始化语句;
while(循环控制条件表达式)
{
if(循环控制变量不等于其初始值)
修改循环控制变量;
语句序列;
}
这样的话由于第一次进入循环的时候循环控制变量的值等于初始值,循环控制变量就不会改变,以后每次都不
问题一:P128 for循环变换成while循环
for(循环控制变量的初始化表达式;
循环控制条件表达式;
循环控制变量修改语句)
{语句序列}
变为:
循环控制变量的初始化语句;
while(循环控制条件表达式)
{
if(循环控制变量不等于其初始值)
修改循环控制变量;
语句序列;
}
这样的话由于第一次进入循环的时候循环控制变量的值等于初始值,循环控制变量就不会改变,以后每次都不
会改变了,不就变成死循环了?
问题二:P110 两种for循环的效率
for(i=0;i<N;i++)
{
if(condition)
DoSomething();
else
DoOtherthing();
}
和
if(condition)
{
for(i=0;i<N;i++)
DoSomething();
}
else
{
for(i=0;i<N;i++)
DoOtherthing();
}
比较,书上说第一种打断了流水线作业,在N很大的时候第二种效率更高
我总觉得这两段程序就不是一个功能
如果 condition 中的内容与 i 有关,比如是根据 i 的奇偶性来执行不同操作怎么办?第二段程序做不到啊
for(i=0;i<N;i++)
{
if(condition)
DoSomething();
else
DoOtherthing();
}
和
if(condition)
{
for(i=0;i<N;i++)
DoSomething();
}
else
{
for(i=0;i<N;i++)
DoOtherthing();
}
比较,书上说第一种打断了流水线作业,在N很大的时候第二种效率更高
我总觉得这两段程序就不是一个功能
如果 condition 中的内容与 i 有关,比如是根据 i 的奇偶性来执行不同操作怎么办?第二段程序做不到啊
问题三:P140
double* func (double *p)
{
return p;
}
double d=100;
*func(&d) = 200; 这种使用方式不好,含义不清楚,我就想问一下,这句应该等价于 d=200 吧?
double* func (double *p)
{
return p;
}
double d=100;
*func(&d) = 200; 这种使用方式不好,含义不清楚,我就想问一下,这句应该等价于 d=200 吧?
问题四:书中多次提到的 ADT、UDT是什么(好像是指数据类型)
UDT是 user define type 么
那么ADT呢?
UDT是 user define type 么
那么ADT呢?
麻烦诸位了,多谢!!!