Ошибка lvalue required as increment operand - C (СИ)
Формулировка задачи:
Добрый день возник вопрос почему вылетает ошибка lvalue required as increment operand в строке 5
Сделано по аналогии с книги по Си Кернигана и Ричи вот оригинальная программа:
Это опечатка в книги или написано по старому стандарту? Прошу также объяснить суть ошибки
2. еще натыкнулся на конструкции которая вызывает ту же ошибку
char ch; char *expr[] = {"my", "w9rd", "the"}; ch = (*++expr)[1]; // 5
#include <stdio.h> #include <string.h> #define MAXLINE 1000 int getline(char *line, int max); /* find: печать строк образцами из 1-го аргумента */ main(int argc, char *argv[]) { char line[MAXLINE]; long lineno = 0; int c, except = 0, number = 0, found = 0; while (—argc > 0 && (*++argv)[0] == '-') while (c = *++argv[0]) switch (c) { case 'x1': - except = 1; break; case ' a' : number = 1; break; default: printf( "find: неверный параметр %с\п", с); argc = 0; found = -1; break; } if (argc != 1) рrintf("Используйте: find -x -n образец\n"); else while (getline(line, MAXLINE) > 0) { lineno++; if ((strstr(line, *argv) != NULL) != except) { if (number) printf("%ld:", lineno); printf("%s", line); ound++; return found; }
int i; i = i + ++i--;
Решение задачи: «Ошибка lvalue required as increment operand»
textual
Листинг программы
ch = (*++expr)[1];
Объяснение кода листинга программы
В данном коде происходит следующее:
- Увеличивается значение переменной
expr
на 1. - Получается значение выражения, которое хранится в переменной
ch
. - Значение переменной
ch
равно значению выражения(*++expr)[1]
. - Выражение
(*++expr)[1]
означает, что сначала увеличивается значение переменнойexpr
на 1, а затем из увеличенного значения вырабатывается значение, которое хранится в квадратных скобках и имеет индекс 1. Таким образом, в данном коде значение переменнойch
равно значению выражения(*++expr)[1]
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д