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; } |