在For循环中使用If语句的麻烦

时间:2017-01-30 00:24:42

标签: c++ if-statement for-loop

所以我试图使用这段代码来打印一个语句,如果它到达循环的末尾而没有在它之前的语句中调用break,这意味着程序得到匹配然后需要打印它。但是,我的if(k + 1 ...)语句永远不会被分支到总是被跳过。为什么会这样?

else {
            cout << "test" << endl;
            looklen = look.length();
            for (j = 0;j < numdist;j++) {
                for (k = 0;k < looklen;k++) {
                    //cout << "test2" << endl;
                    if (look[k] = '?') {
                        k++;
                        continue;
                    }
                    else if (look[k] != distinct[j][k]) {
                        break;
                    }
                    if (k + 1 == looklen) {
                        cout << "test3" << endl;
                        cout << look << " : matches " << distinct[j] << " " << distinctnum[j]+1 << " time(s)." << endl;
                    }
                }

            }
        }

2 个答案:

答案 0 :(得分:3)

if (look[k] = '?') 

始终为真(因为它是一个赋值),这意味着始终执行continue。你可能意味着

if (look[k] == '?') 

哪个是比较

答案 1 :(得分:0)

=运算符用于分配值

==运算符是有条件的

所以它一定是这样的:

if (look[k] == '?')