今天在整理之前的错题遇到这样一道题:
(x = 4 * 5,x * 5),x + 25的值为( ).
(A)25 (B)20 (C)100 (D)45
答案:D
一开始看到这道题完全没有思路,后面看了别人的解释恍然大悟,在这里记录一下。
这道题考察的是逗号运算符,是一种使用范围非常有限的运算符。
它的计算规则是从左到右依次计算每一个表达式,表达式的结果是最后一个表达式的结果。
按照这个规则经过第一个表达式 x = 20 ,第二个表达式×5并没有改变x的值,最后x+25 = 45,因此答案是45。
逗号表达式几乎不会在特定的用法之外使用,最常见的用法往往是循环
void rev(char *s, size_t len)
{
char *first;
for (first = s, s += len; s >= first; --s) {
putchar(*s);
}
}
在这里 for循环的第一个条件用到了等号表达式
更多用法参考维基百科