C语言for循环内声明变量报expected expression错误如何解决?
错误原因
- 语法规则限制:C语言中for循环如果不写大括号,仅能紧跟一条可执行语句,不能直接写变量声明语句,这就是第一个
expected expression报错的原因。 - 变量作用域问题:就算你给for循环加了大括号,
expo变量是在循环内部声明的,作用域仅限循环块内部,循环结束后访问expo就会触发undeclared identifier报错。 - 逻辑错误:你原有代码的幂计算逻辑是错的,每次循环都将
expo赋值为b*b,无论循环多少次结果都只是b的平方,不是b的n次幂。
修正后代码
#include <stdio.h> #include <cs50.h> int main(void) { // 读取用户输入 float b = get_float("Please enter the base number "); int n = get_int("Please enter the exponent "); // 提前声明结果变量,初始值为1(幂运算累乘初始值) float expo = 1.0; // for循环实现累乘n次 for (int i = 0; i < n; i = i + 1) { expo = expo * b; } printf ("The answer is %f", expo); }
内容的提问来源于stack exchange,提问作者sudo_pwn
相关产品推荐
相关产品推荐

