Функция выводит не то, что ожидается - C (СИ)

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

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

вот программка:
#include <math.h>
 
float sum(int k, float x)
{
    if (k=0) return 0;        
    else
             return 1.11111;    
}

double y;
int main()
{
    y=sum(0,1);
    printf("%5f\n",y);
 
    getchar();
    return 0;
}
По идее, написанное должно выводить 0, т.к. вызывается ф.-ия для k=0. Но выводит 1.1111, почему-то... Только что присвоил y=sum(1,0), и все равно вывелось 1.1111. что не так?

Решение задачи: «Функция выводит не то, что ожидается»

textual
Листинг программы
char cx, *p;
for(p=s; сx=*p; p++) {
  // что-то делаем с cx
}

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

В данном коде выполняется цикл по символам строки s, при этом каждый символ копируется в переменную cx. Однако, в отличие от стандартного цикла for в языке C, здесь нет инкрементации переменной p, что приводит к тому, что p всегда остается указывать на один и тот же символ строки s. Вот список действий, выполняемых в данном коде:

  1. Инициализация указателя p значением s.
  2. Установка значения cx равным значению первого символа строки s (т.е. *p).
  3. Выполнение цикла, который будет выполняться до тех пор, пока значение cx не станет равным нулю (т.е. пока не будет выполнено условие сx=*p).
  4. Внутри цикла выполняется какая-то операция с переменной cx.
  5. После выполнения цикла переменная p не инкрементируется, поэтому она всегда остается указывать на тот же символ строки s. Следует отметить, что данный код не является оптимальным и может вызвать проблемы при работе с большими строками.

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


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

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

12   голосов , оценка 4.167 из 5
Похожие ответы