0
int main()
{
    char *p = "ayqm";
    char c;
    c = ++*p++;
    printf("%c",c);
}

「c」と表示されるべきだと思ったのですが、「b」と表示されます。説明してください。

4

3 に答える 3

3

これは、演算子の優先順位によるものです。後置演算子は、逆参照された値ではなく、ポインター++を増加させます。

したがって、式は'a'、接頭辞の増加によって増加した最初のものを返します'b'が、上記の演算子の優先順位により、接尾辞の増加は実際にはポインター用です。

于 2013-08-31T17:00:01.067 に答える
0

ここでは接尾辞が最も優先されますが、ステートメントの後の値にのみ影響します。++ と * の優先順位は同じで、右結合性があります。そこでは、次のように機能します。

*p -> に評価されます

++'a' は 'b' に評価されます

于 2013-08-31T17:05:54.770 に答える