Warning:Statement with no effect - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста, написал функцию которая выводит строку на дисплей. В связи с тем что русская кодировка не совпадает с ascii пришлось под русский писать самостоятельно. В функцию я передаю адрес первого элемента и вывожу до окончания строки. Вот кусок функции, всю не привожу, уж больно длинная, но принцип прост и понятен:
void PrintStrFromMB(char* Text)
{
    for(Text; *Text; Text++)
    {
        switch(*Text)
        {
            case 'А':
            {
                SendByte(0b01000001, 1);
                break;
            }
            case 'Б':
            {
                SendByte(0b10100000, 1);
                break;
            }
            case 'В':
            {
                SendByte(0b01000010, 1);
                break;
            }
            case 'Г':
            {
                SendByte(0b10100001, 1);
                break;
            }
            case 'Д':
            {
                SendByte(0b11100000, 1);
                break;
            ...
            }
При компиляции выдает warning: statement with no effect. Все шуршит и работает, но глаза мозолит.

Решение задачи: «Warning:Statement with no effect»

textual
Листинг программы
while(*(Text++))

Объяснение кода листинга программы

В данном коде реализована функция, которая принимает в качестве аргумента строку (предположительно текст) и проверяет, является ли каждый символ в этой строке символом новой строки (или переводом строки). Вот список действий, которые выполняются в этом коде:

  1. *(Text++) - это операция, которая увеличивает указатель Text на единицу и возвращает значение, на которое указывает Text до его увеличения. Это позволяет проверить каждый символ в строке.
  2. while(*(Text++)) - это цикл, который продолжает выполняться, пока *(Text++) не станет NULL (или не будет равно нулю), что обычно происходит в конце строки.
  3. В каждой итерации цикла значение *(Text++) увеличивается на единицу, что позволяет проверить каждый символ в строке.
  4. Если *(Text++) не равно NULL, то это означает, что текущий символ является символом новой строки (или переводом строки).
  5. Цикл продолжает выполняться до тех пор, пока не будет найден символ новой строки (или перевода строки), что указывает на конец строки.
  6. Если цикл завершается, значит, все символы в строке являются символами новой строки (или перевода строки), что может указывать на проблему в коде.
  7. В результате выполнения этого кода можно получить информацию о том, содержит ли строка символы новой строки (или перевода строки) и где они находятся.
  8. Отчет об ошибке Warning:Statement with no effect может указывать на то, что этот код не делает ничего полезного и может быть оптимизирован или удален.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5