swe*_*tha 3 c
#include <stdio.h> int main() { char *q; char *p = "sweta"; q = ++p++; printf("%s", q); }
什么是输出是这个程序有效,因为它给出了所需的l值的错误.
Pra*_*rav 6
q = ++p++; 这甚至不会在C或C++中编译
q = ++p++;
后增量运算符的优先级高于预增量运算符
所以q= ++p++被解释为q = ++(p++).现在,后增量运算符返回一个rvalue表达式,而preincrement运算符则要求其操作数为lvalue.
q= ++p++
q = ++(p++)
rvalue
lvalue
ISO C99 (Section 6.5.3.1/1)
Constraints
pre fi x递增或递减运算符的操作数应具有合格或不合格的实数或指针类型,并且应为可修改的左值.
归档时间:
15 年,6 月 前
查看次数:
158 次
最近记录:
13 年,9 月 前