Chociaż byłem łącząc funkcję do-wielkie litery w C++ I zauważyłem, że nie otrzymał oczekiwanego wyjście w CC ciąg na duże litery w C i C++
funkcję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;
}
wyjściowe, jak oczekiwano
FOOBAR
C funkcja
#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;
}
Wyjście jest oczekiwany wynik z pierwszego znaku brakującego
OOBAR
Czy ktoś wie dlaczego wynik zostanie obcięty podczas kompilacji w C?
A jeśli naprawdę chciałeś to zrobić w 'C++': 'std :: transform (a, a + strlen (a), a, std :: toupper); ' – PaulMcKenzie
Czy możesz wyjaśnić, dlaczego spodziewałeś się przekształcenia ciągu w wielkie litery? W szczególności, dlaczego spodziewałeś się, że prawy bok '=' zostanie oceniony przed lewym? –
Jestem wdzięczny wszystkim, którzy przekazali informacje zwrotne i za cenne informacje dostarczone –