程序设计基础第三周答疑要点整理

关于pow函数

math.h里的pow函数虽然确实可以计算次幂,但它的参数和返回值均为 double 类型,当题目中需要计算整数的整数次幂时,建议使用循环累乘的朴素方法,即:

1
2
3
4
5
6
int a, x; //计算a的x次方
int ans = 1;
for (int i = 1; i <= x; ++i) {
ans = ans * a;
}
//ans 是a的x次方

或者快速幂算法(目前不作要求,有兴趣的同学可以自行学习)。

关于优先级

在混用位运算符和四则运算符、比较运算符时需要注意算符的优先级问题

例如条件语句 if (x&y == 0) ,由于比较运算符的优先级高于位运算符,括号中的条件实际是将比较语句 y == 0 的结果计算出来(若满足则值为1,否则为0),然后使用这个结果再与 x 执行与运算 &,而不是先计算了 x&y 的结果再与0作比较。

如果你按照《C1-E1答疑要点整理》中所说的打开了“显示全部警告信息(-Wall)”,那么就会看到如下的警告信息:

1
[警告] suggest parentheses around comparison in operand of '&' [-Wparentheses]

各种算符优先级划分记忆起来可能有些困难,推荐的做法是使用括号将想要先执行的运算步骤单独包括起来,这样就可以要求这步运算具有更高的优先级,例如 if ((x & y) == 0) 。简而言之,你记不住优先级没关系,只要会加括号就行了。


作者:逐月的游星、梁秋月


程序设计基础第三周答疑要点整理
https://suzumiyaakizuki.github.io/2023/10/12/C3-E3答疑要点整理/
作者
SuzumiyaAkizuki
发布于
2023年10月12日
许可协议