Пока я собирал в С++ функцию верхнего регистра, я заметил, что я не получил ожидаемый результат в C.
Функция С++
#include <iostream>
#include <cctype>
#include <cstdio>
void strupp(char* beg)
{
while (*beg++ = std::toupper(*beg));
}
int main(int charc, char* argv[])
{
char a[] = "foobar";
strupp(a);
printf("%s\n", a);
return 0;
}
Вывод ожидаемого результата:
FOOBAR
Функция C
#include <ctype.h>
#include <stdio.h>
#include <string.h>
void strupp(char* beg)
{
while (*beg++ = toupper(*beg));
}
int main(int charc, char* argv[])
{
char a[] = "foobar";
strupp(a);
printf("%s\n", a);
return 0;
}
Результат - ожидаемый результат с отсутствием первого символа
OOBAR
Кто-нибудь знает, почему результат усекается при компиляции в C?