Я только что столкнулся с какой-то странной проблемой, я пытаюсь напечатать целочисленную переменную, но я забыл указать имя переменной, т.е.
printf("%d");
вместо
printf("%d", integerName);
Удивительно, что программа компилируется, есть выход, и это не случайно. На самом деле, это очень целое число, которое я хотел напечатать, в первую очередь, это m-1.
Понятная инструкция printf
будет последовательно выводить m-1 до тех пор, пока программа будет работать... Другими словами, она ведет себя точно так, как если бы инструкция читала
printf("%d", m-1);
Кто-нибудь знает причину такого поведения? Я использую g++ без каких-либо параметров командной строки.
#include <iostream>
#define maxN 100
#define ON 1
#define OFF 0
using namespace std;
void clearArray(int* array, int n);
int fillArray(int* array, int m, int n);
int main()
{
int n = -1, i, m;
int array[maxN];
int found;
scanf("%d", &n);
while(n!=0)
{
found=0;
m = 1;
while(found!=1)
{
if(m != 2 && m != 3 && m != 4 && m != 6 && m != 12)
{
clearArray(array, n);
if(fillArray(array, m, n) == 0)
{
found = 1;
}
}
m++;
}
printf("%d\n");
scanf("%d", &n);
}
return 0;
}
void clearArray(int* array, int n)
{
for(int i = 1; i <= n; i++)
array[i] = ON;
}
int fillArray(int* array, int m, int n)
{
int i = 1, j, offCounter = 0, incrementCounter;
while(offCounter != n)
{
if(*(array+i)==ON)
{
*(array+i) = OFF;
offCounter++;
}
else
{
j = 0;
while((*array+i+j)==OFF)
{
j++;
}
*(array+i+j) = OFF;
offCounter++;
}
if(*(array+13) == OFF && offCounter != n) return 1;
if(offCounter ==n) break;
incrementCounter = 0;
while(incrementCounter != m)
{
i++;
if(i > n) i = 1;
if(*(array+i) == ON) incrementCounter++;
}
}
return 0;
}