有趣的程序分析之C
1、
下面的函数被用来计算某个整数的平方,它能实现预期设计目标吗?如果不能,试回答存在什么问题:
1
2
3
4
|
int square( volatile int *ptr )
{ return *ptr * *ptr;
} |
由于*ptr的值可能在两次取值语句之间发生改变,因此a和b可能是不同的。结果,这段代码可能返回的不是你所期望的平方值!正确的代码如下:
1
2
3
4
5
6
|
long square( volatile int *ptr )
{ int a;
a = *ptr;
return a * a;
} |