1

「*(ポインターの取得)」と「++」の演算子の優先順位を調べたいのですが、どのように文を設計してテストすればよいでしょうか?

char* s
*s++;

右側にあるため、これは ++ 演算子をテストできません。

4

2 に答える 2

2

指定しませんでしたが、あなたの例から、接頭辞形式ではなく後置演算子 ++を参照していると思います。その場合、あなたの式:

*s++;

次のいずれかとして解釈される可能性があるため、演算子の優先順位をテストするのに適しています

(*s)++;    // -> increment the char pointed at by s

また:

*(s++);    // -> increment the pointer s itself

どちらの演算子がより緊密にバインドされるかによって異なります (優先度が高くなります)。

実際、C/C++ の規則では、後置演算子は常に前置演算子よりも強く結合するため、上記の 2 番目の解釈が正しい解釈です。

プログラムで何が発生したかを実際に確認するには、さらに設定して出力する必要があります。特に、s最初に何かを指すように初期化する必要があります。

この後半部分についてサポートが必要な場合は、お知らせください。

于 2012-05-16T04:15:19.507 に答える
1

ミニプログラムを作成し、出力をチェックすることで「テスト」できます。

int main() {
    char c[] = "hello";
    char* s = c;
    std::cout << *s++ << std::endl; // prints 'h'
    std::cout << *s << std::endl; // prints 'e'
}
于 2012-05-16T04:18:01.350 に答える