なぜこのコードが正しいのか理由を説明してください: 私の意見では、p1が先に参照解除されてからインクリメントされるため、++ * p1 = * p2 ++は未定義の動作をしています。これは未定義の動作ですか、なぜですか?
int main()
{
char a[] = "Hello";
char b[] = "World";
char* p1 = a;
char* p2 = b;
//*++p1 = *p2++; // is this OK?
++*p1 = *p2++; // is this OK? Or this is UB?
std::cout << a << "\n" << b;
return 0;
}
は、私は誰も今朝は、グループ化についての質問を、なぜだろう、任意の '++'、 '*'と '=' 1恐ろしく複雑で読みにくいライン... – ereOn
であなたがしようとしている場合コードが恐ろしく爆発して黙示録を引き起こすかどうかを判断し、**使用しないでください**。それがどれほど明確に定義されているかにかかわらず、*良いコードではない*。 – ssube
読みやすく透明でない場合は大丈夫です。 – maligree