Имеется код:
char *_itoa(int i) {
static char buf[2];
buf[0] = i + '0';
buf[1] = '\0';
return buf;
}
int main() {
printf("%s + %s = %s", _itoa(2), _itoa(2), itoa(4));
_getch();
}
, который выводит 2 + 2 = 2
1. если выводить printf("%s + %s = %s", _itoa(5), _itoa(2), itoa(4)), то будет выводится 5 + 5 = 5
2. если выводить printf("%s + %s = %s", _itoa(10), _itoa(2), itoa(4)), то будет выводится : + : = :
3. если выводить printf("%s + %s = %s", _itoa(2), _itoa(10), itoa(10)), то будет выводится 2 + 2 = 2
Почему код именно так работает?
Символы повторяются из-за static?
Почему во втором примере выводится не 10 + 10 = 10, а : + : = :? Из-за + '0'? Тогда что дает это сложение?