为什么我的 for 循环是无限循环 (C)?

Why is my for loop an infinite loop (C)?

我有这段代码:

#include <stdio.h>
#include <ctype.h>
#include <unistd.h>

#define DATA_SIZE 25
#define LINE 10

#define BYTES_A_ROW         ((int)10)
#define ADDR_COLUMN_WIDTH   ((int)(2 * sizeof(void *)) - 2)  //char size of an address =$
#define BYTE_COLUMN_WIDTH   ((int)(BYTES_A_ROW * 3) - 1) // 1 bytes is 2 hex chars + s$
#define COLUMN_SEPARATOR    " "

int main() {
    typedef unsigned char byte_t;
    byte_t data[DATA_SIZE];
    int i;
    int j;
    int remainder = DATA_SIZE % LINE;

    // print table header
    printf("\n%-*s", ADDR_COLUMN_WIDTH, "Address");
    printf("%s", COLUMN_SEPARATOR);
    printf("%-*s", BYTE_COLUMN_WIDTH, "Bytes");
    printf("%s", COLUMN_SEPARATOR);
    printf("%-*s\n", BYTES_A_ROW, "Chars");

    for (i = 0; i < ADDR_COLUMN_WIDTH; i++)
        printf("-");
    printf("%s", COLUMN_SEPARATOR);
    for (i = 0; i < BYTE_COLUMN_WIDTH; i++)
        printf("-");
    printf("%s", COLUMN_SEPARATOR);
    for (i = 0; i < BYTES_A_ROW; i++)    // number of chars is char-column is exactly$
        printf("-");
    printf("\n");

    for (i = 0; i < DATA_SIZE - remainder; i = +LINE) {
        printf("%p ", (void*)&data[i]);
        for (j = i; j < i + LINE; j++) {
            printf("%02x ", data[j]);
        }
        for (j = i; j < i + LINE; j++) {
            if (isprint(data[j])) {
                printf("%c", data[j]);
            } else {
                printf(".");
            }
        }
        printf("\n");
    }
}

出于某种原因,我的第四个 for 循环一直在循环。变量 i 保持 10... 为什么它不递增而变成 20 并跳出循环?我确定我遗漏了一些明显的东西。

您应该使用 i+=LINE 而不是 i=+LINE

循环中

for(i=0; i<DATA_SIZE-remainder; i=+LINE)   

您在每次迭代中将 LINE 分配给 i+LINE 中的 + 是一元 + 运算符。
您需要将 i=+LINE 更改为 i += LINE,以便在每次迭代中将 i 增加 LINE