1
char *p="abcd";
我有以下代码中的两个语句
++*p;
和第二个
*++p;
这两个都产生相同的结果,但有在途中的任何差这两个是否实现?还请清除哪一个具有更高的优先级“++”或“*”。谢谢
char *p="abcd";
我有以下代码中的两个语句
++*p;
和第二个
*++p;
这两个都产生相同的结果,但有在途中的任何差这两个是否实现?还请清除哪一个具有更高的优先级“++”或“*”。谢谢
引用具有更高优先级的优先级表运算符将首先进行评估。
在您的情况下,您使用的前缀增量为++
,它与尊重运算符*
具有相同的优先级。 所以当你有两个在同一个表达式时应该考虑它的关联性which is right to left
++ * p将等于++(* p)指针首先被置位,然后值递增。
char *p="abcd";
即*p
等于a
和++
上字符会给你b
* ++ p将为相当于*(++ p)的指针被递增第一然后deference'd
即++p
将指向b
字符串中,然后再*
尊重会给你b。在位置2
改变你的输入字符串,你会得到不同的答案。你得到的同样的答案正如第一个字符的操作与第二个操作匹配
这两个语句只是产生相同的值,因为你初始化了'p'的特定字符串(并且因为你的编译器没有发生分配标记为只读的内存中的字符串)。 – user2357112
尝试字符串“等等”,看看他们做**不**产生相同的结果。 –
@ Cheersandhth.-Alf,但为什么它产生相同的结果 – YakRangi