gpt4 book ai didi

c - "if"条件在 "for"中被忽略

转载 作者:行者123 更新时间:2023-11-30 16:09:01 24 4
gpt4 key购买 nike

我有一个代码,可以根据数据库 ID 从数据库中提取数据。

当我使用循环来忽略 if 条件时,即使等于,代码也始终运行。

我制作了两个示例,展示了 for 的使用,另一个示例仅展示了 if check。

使用 if only 检查,代码可以工作,但我需要使用 for,因为数据库有很多条目。

数据库条目:

0,2115
1,604
2,254
3,425
4,321
5,98
6,15001
...

代码:

int use_sm(struct session *ss, int n) {
struct db_sm *sm = sm->database(ss->get_sm);

if (!sm)
return 1;

if (sm->enable && sm->count_db > 0) {
struct get_dfs *gf = ss->data[n];

if (gf) {
for (int i = 0; i < sm->count_db; i++) {
if(gf->u_id != sm->db[i].u_id) { //code is running even though ==
printf("u_id %d db_u_id %d\n", gf->u_id, sm->db[i].u_id);
sm->use_sm_sub(sm, 5);
return 0;
}
}
}
}
return 1;
}

代码如果:

int use_sm(struct session *ss, int n) {
struct db_sm *sm = sm->database(ss->get_sm);

if (!sm)
return 1;

if (sm->enable && sm->count_db > 0) {
struct get_dfs *gf = ss->data[n];

if (gf) {
if (gf->u_id != sm->db[0].u_id && gf->u_id != sm->db[1].u_id && gf->u_id != sm->db[2].u_id && gf->u_id != sm->db[3].u_id) {
printf("u_id %d u_id1 %d u_id2 %d u_id3 %d u_id4 %d\n", gf->u_id, sm->db[0].u_id, sm->db[1].u_id, sm->db[2].u_id, sm->db[3].u_id);
sm->use_sm_sub(sm, 5);
return 0;
}
}
}
return 1;
}

使用 if 条件的代码可以正常工作。当 if 验证 gf->u_id 值为 ==sm->db[x].u_id代码没有被执行。

for循环有什么问题?

最佳答案

if 使用 && 测试多个条件,一个 false 条件会导致整个 if 为 false。
for 多次迭代并测试一个条件,并且针对每个真条件执行该 block 。
使用标志来查找匹配项,并在设置标志时跳过打印。

int use_sm(struct session *ss, int n) {
struct db_sm *sm = sm->database(ss->get_sm);

if (!sm)
return 1;

if (sm->enable && sm->count_db > 0) {
struct get_dfs *gf = ss->data[n];
if (gf) {
int match = 0;
for (int i = 0; i < sm->count_db; i++) {
if(gf->u_id == sm->db[i].u_id) {
match = 1;//found a match
}
}
if ( ! match) {//no matches
printf("u_id %d ", gf->u_id);
for (int i = 0; i < sm->count_db; i++) {
printf("db[%d].u_id %d ", i, sm->db[i].u_id);
}
printf("\n");
sm->use_sm_sub(sm, 5);
return 0;
}
}
}
return 1;
}

关于c - "if"条件在 "for"中被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59227720/

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