C语言中的IF语句中的Operator ++

时间:2014-07-13 14:32:01

标签: c

我有这个:

...
int charry = 0;
if (l[charry++] == 'a'){
    whatever;
}
...

问题是:无论如何都会增加charry,或者只是l[charry] == 'a'评估为真?

提前谢谢。

2 个答案:

答案 0 :(得分:5)

char是保留的关键字。程序甚至不会编译。


编辑:在比较之前,将评估==的两个操作数,因此会对表达式产生任何副作用。因此,charry将被修改。

答案 1 :(得分:3)

if语句后绝对会增加1。 如果您选择将变量命名为保留关键字以外的其他内容。

int charry = 0;
if (l[charry++] == 'a'){
    whatever;
}
// charry is now 1

如果在下一个序列点之前再次使用charry,正如用户delnan在其评论中所解释的那样,您将有未定义的行为。