首页 > 试题广场 >

指出下列代码的缺陷( &nb...

[不定项选择题]
指出下列代码的缺陷()
float f[10];
// 假设这里有对f进行初始化的代码
// ….
for(int i = 0; i < 10;) {
    if(f[++i] == 0)
        break;
}
  • for(int i = 0; i < 10;)这一行写错了
  • f是float型数据直接做相等判断有风险
  • f[++i]应该是f[i++]
  • 没有缺陷
c数组会下标越界 b选项,如果数组中的某个值是0,那么浮点型的0不是真正的0,而是类似0.00000001这样的近似数,这样的值跟0比较的话是不相等的,也就是说0!=0也就不会break退出循环。有一定风险。
发表于 2020-10-27 20:59:27 回复(0)
A选项哪错了??我要是写for(int i=-1,i<9;i++) 不就ok了??还要改什么f[i++]啊,这题就是不行
发表于 2020-12-31 09:11:58 回复(2)
C选项错,是因为++i会导致数组下标越界异常,B错原因我想应该是==右边是整型,左边是浮点型,浮点数不能直接使用==判断,而是使用包装类型的equals()方法比较吧。
发表于 2020-10-07 15:23:03 回复(0)
++i时,i的值为1,i为0的情况没有
发表于 2019-09-06 17:04:22 回复(2)
<p>c语言没有越界检查,运行到f[10]发生越界异常,报错</p>
发表于 2021-01-26 19:29:51 回复(0)

浮点型和“0”比较是和一个接近于“0”的数比较。

c中在i为9时发生数组越界f[10];

发表于 2022-11-26 15:30:57 回复(0)
不懂,求大佬答疑。
发表于 2020-09-23 08:59:23 回复(0)
C++程序(Java中f[10]已经报错了),首先f[0]没有初始化,其次此程序会访问到f[10],发生访问越界
发表于 2019-09-11 11:16:04 回复(0)
a选项也对,for(int i = 0; i < 10;)在VC2010里面运行会报错,不能在循环的时候才定义变量i
发表于 2023-06-01 19:28:26 回复(0)
A为什么没有错呀

发表于 2023-02-27 23:52:29 回复(0)
bc
发表于 2021-06-18 13:35:14 回复(0)
没看清不定项选择
发表于 2020-09-29 21:36:21 回复(0)