void main()
{
printf("Adi%d"+2,3);
}
выход = i3Как работает printf в приведенном ниже коде?
Это Printf заявление работала, но как оператор работал?
void main()
{
printf("Adi%d"+2,3);
}
выход = i3Как работает printf в приведенном ниже коде?
Это Printf заявление работала, но как оператор работал?
printf("Adi%d"+2,3);
"Adi%d"
- интерпретируется как начало адреса памяти, где строка символов "Adi%d"
хранится. Когда вы добавляете 2 к нему, он становится адресом памяти, где хранится строка "i%d"
. Итак, в основном вы передали строку printf: "i%d"
. Затем %d
и printf
вошли в игру вместо %d
с 3, следовательно, выход i3
.
Его часть указателя на символ, ничего не делать с Printf, "Adi" + 2
сделает чтение из положения 0 + 2 = 2
, которые будут i
int main()
{
char* a = "Adi" + 2;
printf(a); // output i
}
Это не является примером для подражания. –
Теперь почему это работает? 'printf (& 2 ?? (" Adi% d ":>, 010-05);' Тот же тип бессмысленного вопроса обфускации. – Lundin
Note [Что должно быть 'main()' return in C и C++?] (http: // stackoverflow.com/questions/204476/) –