は++私はC.C文字列はCに大文字にすると、私はCで一緒に、大文字の機能を入れていた一方でC++
に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にコンパイル中に結果が切り捨てられます、なぜ誰でも知っていますか?
これを実際に 'C++'で実行したければ: 'std :: transform(a、a + STRLEN(a)は、STD :: TOUPPER);あなたは、これは文字列を大文字に変換することが期待なぜ ' – PaulMcKenzie
あなたは説明できますか?具体的には、なぜあなたは '= 'の右側が左より前に評価されると思いますか? –
私はフィードバックを与えたすべての人々に感謝していと –