我想我会得到12,而不是7。w++,那么w将是4,它是100,而w++,w将是8,1000;所以w++|z++将是<代码>D11将是<代码>D12。
我哪儿不好?
int main()
{
int w=3, z=7;
printf("%d\n", w++|z++);
}发布于 2012-03-20 12:42:21
问题是,通过使用w++|z++,您首先使用的是w和ORing的值,该值与z的当前值相加,然后递增。改为使用++w|++z,数字将首先递增,然后使用。
int main()
{
int x = 10;
// prints 10
printf("%d\n", x++);
// prints 11
printf("%d\n", x);
x = 10;
// prints 11
printf("%d\n" ++x);
// prints 11
printf("%d\n" x);
}使用--x和x--也可以做到这一点。有关详细信息,请参阅this relevant question。
发布于 2012-03-20 12:42:32
您误解了后缀++运算符。变量的值在变量递增之前使用。对于++w|++z中的前缀++运算符,您的分析将是正确的。
发布于 2012-03-20 12:42:50
这些是后增量运算符;它们在运算后生效,因此在运算中使用3和7。
https://stackoverflow.com/questions/9781437
复制相似问题