Столкнулся с совершенно непонятным мне эффектом, работа оператора 
if else меняется из-за внесения двух казалось бы ни на что не влияющих переменных
На вход программ подаётся текстовый файл:
7
push 1
push 2
push 3
push 4
push 5
push 6
pop
Вывод осуществляется в консольное окно
По задумке если слово push то на выход должно выводиться число следующее за этим словом, а если pop то слово NO
Вот эта программа (с бесполезной переменной) работает правильно, выводя единственное NO
#include <stdio.h>
int main() {
        freopen("input.txt", "r", stdin);
        char s[4];
        int Q, arr[20];
        scanf("%d", &Q);
        int j=0;                // объявление бесполезной переменной
        for(int i=0; i<Q; ++i) {
                scanf("%s", s);
                if(s[1]=='u') {
                        scanf("%d", &arr[i]);
                        printf("%d\n", arr[i]);
                        ++j; // изменение бесполезной переменной
                }                                               
                else {
                        printf("NO\n");
                }                                       
        }                       
        return 0;
}
  Вывод такой:
1
2
3
4
5
6
NO
Вот эта программа (с бесполезной переменной в другом блоке) тоже работает правильно, выводя единственное NO
#include <stdio.h>
int main() {
        freopen("input.txt", "r", stdin);
        char s[4];
        int Q, arr[20];
        scanf("%d", &Q);
        int j=0;  // объявление бесполезной переменной
        for(int i=0; i<Q; ++i) {
                scanf("%s", s);
                if(s[1]=='u') {
                        scanf("%d", &arr[i]);
                        printf("%d\n", arr[i]);         
                }                                               
                else {
                        printf("NO\n");
                        ++j; // изменение бесполезной переменной
                }                                       
        }                       
        return 0;
}
  Но если бесполезных, как мне кажется ни на что не влияющих переменных две, по одной в каждом блоке, то программа работает неверно, слово NO выводится вместо одного раза шесть раз
#include <stdio.h>
int main() {
        freopen("input.txt", "r", stdin);
        char s[4];
        int Q, arr[20];
        scanf("%d", &Q);
        int j=0, k=0; // объявление двух бесполезных переменных
        for(int i=0; i<Q; ++i) {
                scanf("%s", s);
                if(s[1]=='u') {
                        scanf("%d", &arr[i]);
                        printf("%d\n", arr[i]); 
                        ++j;    //изменение первой бесполезной переменной
                }                                               
                else {
                        printf("NO\n");
                        ++k; //изменение второй бесполезной переменной
                }                                       
        }                       
        return 0;
}
  Вывод такой:
1
2
3
4
5
6
NO
NO
NO
NO
NO
NO
Каким образом эти две вместе взятые бесполезные переменные меняют работу оператора 
if else?