我正在阅读K&R书,第63页有一行
while (--lim > 0 && (c=getchar()) != EOF && c != '\n')
Run Code Online (Sandbox Code Playgroud)
其中lim是int等于1000
我的问题是,为什么在没有循环的后续运行后,lim没有减少?在我看来,--lim等同于"LIM = LIM - 1"
================================================== =================
感谢所有的答案 !
--lim意思是"从价值中取一个lim并使用结果".
替代方案lim--是"使用价值,lim然后取走一个".
因此,如果lim在第一次循环执行时从1000开始,999它将在检查之前是否具有该值以查看它是否大于0.如果是lim--那么将检查的值将是1000,但它仍将具有值999在迭代结束时通过循环.这在循环的开始和结束时很重要.
MSDN作为此前缀增量和减量运算符的页面
当运算符出现在其操作数之前时,操作数会递增或递减,其新值将是表达式的结果.