「*(ポインターの取得)」と「++」の演算子の優先順位を調べたいのですが、どのように文を設計してテストすればよいでしょうか?
char* s
*s++;
右側にあるため、これは ++ 演算子をテストできません。
「*(ポインターの取得)」と「++」の演算子の優先順位を調べたいのですが、どのように文を設計してテストすればよいでしょうか?
char* s
*s++;
右側にあるため、これは ++ 演算子をテストできません。
指定しませんでしたが、あなたの例から、接頭辞形式ではなく後置演算子 ++を参照していると思います。その場合、あなたの式:
*s++;
次のいずれかとして解釈される可能性があるため、演算子の優先順位をテストするのに適しています。
(*s)++; // -> increment the char pointed at by s
また:
*(s++); // -> increment the pointer s itself
どちらの演算子がより緊密にバインドされるかによって異なります (優先度が高くなります)。
実際、C/C++ の規則では、後置演算子は常に前置演算子よりも強く結合するため、上記の 2 番目の解釈が正しい解釈です。
プログラムで何が発生したかを実際に確認するには、さらに設定して出力する必要があります。特に、s
最初に何かを指すように初期化する必要があります。
この後半部分についてサポートが必要な場合は、お知らせください。
ミニプログラムを作成し、出力をチェックすることで「テスト」できます。
int main() {
char c[] = "hello";
char* s = c;
std::cout << *s++ << std::endl; // prints 'h'
std::cout << *s << std::endl; // prints 'e'
}