<分区>
我的提示如下:
编写一个名为 alternator 的函数的定义,该函数不接收任何参数并在第一次调用时返回 1,在下次调用时返回 0,然后是 1、0 等等,在连续调用时在 1/0 之间交替.
我的尝试是:
int alternator(void) {
static int x = 0;
if(x == 0) {
return 1;
}
else if (x % 2 == 0) {
return 1;
x++;
}
else {
return 0;
x++;
}
}
我哪里出错了?
我更喜欢 xor
因为如果你可以调用 alternator
的次数没有上限:
int alternator(void) {
static int x = 0; // set to 1 if you want 0 as first value...
return x ^= 1;
}
演示:
int main(int argc, char *argv[]) {
for(int i=0; i<10; i++){
printf("%d %d\n", i, alternator());
}
}
打印:
0 1
1 0
2 1
3 0
4 1
5 0
6 1
7 0
8 1
9 0
正如评论中指出的,您还可以:
int alternator(void) {
static int x = 0;
return x = !x;
}