我有这个:
...
int charry = 0;
if (l[charry++] == 'a'){
whatever;
}
...
问题是:无论如何都会增加charry,或者只是l[charry] == 'a'
评估为真?
提前谢谢。
答案 0 :(得分:5)
char
是保留的关键字。程序甚至不会编译。
编辑:在比较之前,将评估==
的两个操作数,因此会对表达式产生任何副作用。因此,charry
将被修改。
答案 1 :(得分:3)
if语句后绝对会增加1。 如果您选择将变量命名为保留关键字以外的其他内容。
int charry = 0;
if (l[charry++] == 'a'){
whatever;
}
// charry is now 1
如果在下一个序列点之前再次使用charry
,正如用户delnan在其评论中所解释的那样,您将有未定义的行为。