我只是在学习一些 C 语言,或者更确切地说,是对一些神秘的细节有所了解。我正在使用 VTC 高级 C 编程,其中我发现序列点是:
- 分号
- 逗号
- 逻辑或/与
- 三元运算符
- 函数调用(任何用作函数调用参数的表达式都已完成调用)
这些都是正确的吗?关于我尝试的最后一个:
void foo (int bar) { printf("I received %d\n", bar); }
int main(void)
{
int i = 0;
foo(i++);
return 0;
}
它没有打印 1,根据 VTC 的人所说,如果我理解正确,它应该,对吧?此外,函数调用中的这些括号是否与分组括号相同?(我的意思是,他们的优先级)。也许是因为括号的优先级高于 ++ 但我也尝试过 foo((i++)); 并得到相同的结果。只做 foo(i = i + 1); 产生了 1。
先感谢您。请考虑我来自南美,所以如果我不清楚或没有任何意义,请告诉我。
最热烈的问候,塞巴斯蒂安。