91 ) { gr-6ren">
gpt4 book ai didi

c - 在 C 中使用一长串 "if/else if"语句的更好替代方案?

转载 作者:太空狗 更新时间:2023-10-29 17:04:41 26 4
gpt4 key购买 nike

最初我使用 switch/case,但条件必须是变量匹配的常量值,而不是变量是否在范围内的 bool 值。

相反,我有这个怪物:

    if ( data[y] > 91 ) {
grades[9] = grades[9] + 1;
}
else if ( data[y] > 88 && data[y] < 92 ) {
grades[8] = grades[8] + 1;
}
else if ( data[y] > 84 && data[y] < 89 ) {
grades[7] = grades[7] + 1;
}
else if ( data[y] > 81 && data[y] < 85) {
grades[6] = grades[6] + 1;
}
else if ( data[y] > 79 && data[y] < 82) {
grades[5] = grades[5] + 1;
}
else if ( data[y] > 74 && data[y] < 79 ) {
grades[4] = grades[4] + 1;
}
else if ( data[y] > 71 && data[y] < 75 ) {
grades[3] = grades[3] + 1;
}
else if ( data[y] > 68 && data[y] < 72 ) {
grades[2] = grades[2] + 1;
}
else if ( data[y] > 59 && data[y] < 69 ) {
grades[1] = grades[1] + 1;
else {
//data[y] < 60:
grades[0] = grades[0] + 1;
}

有没有人知道处理这段代码的更好方法,因为我的 switch/case 想法不适用?当然,必须有更好的方法来做到这一点。

最佳答案

缩短代码最明显的方法是摆脱不必要的二次测试:

if      (data[y] >= 92) ++grades[9];
else if (data[y] >= 89) ++grades[8];
else if (data[y] >= 85) ++grades[7];
else if (data[y] >= 82) ++grades[6];
else if (data[y] >= 80) ++grades[5];
else if (data[y] >= 75) ++grades[4];
else if (data[y] >= 72) ++grades[3];
else if (data[y] >= 69) ++grades[2];
else if (data[y] >= 60) ++grades[1];
else ++grades[0];

关于c - 在 C 中使用一长串 "if/else if"语句的更好替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25794662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com