我想做一个程序在数组上循环,然后反向循环。如何用更少的代码在C语言中让它变得更好?数组有8个元素!我想做一个在数组上循环然后向后循环的程序。
while (1) {
if (i == 0) {
direction = 0; // RIGHT DIRECTION
}
if (i == 7) {
direction = 1; // LEFT DIRECTION
}
PORTD = array[i]; // NEEDED ARRAY ELEMENT
if (direction == 0) {
i++;
} else {
i--;
}
}
你可以简化你的代码,让 direction
下一个指数的增量。1
或 -1
.
下面是一个修改后的版本。
int i = 0, direction = 1;
for (i = 0;; i += direction) {
if (i == 0) {
direction = 1; // RIGHT DIRECTION
} else
if (i == 7) {
direction = -1; // LEFT DIRECTION
}
PORTD = array[i]; // NEEDED ARRAY ELEMENT
}
正如其他人所指出的,你需要把增量变量的符号反过来, 然后你需要使用一个适当的条件来终止循环。
#include <stdio.h>
int main()
{
int i = 0, direction = 1;
int PORTD, array[8] = {10, 11, 12, 13, 14, 15, 16, 17};
for (i = 0 ; i >= 0 ; i += direction)
{
PORTD = array[i];
printf("i=%d array[%d]=%d\n", i, i, array[i]);
if(i == (sizeof(array)/sizeof(array[0]))-1 )
direction = -1;
}
}