Функция выводит не то, что ожидается - C (СИ)
Формулировка задачи:
вот программка:
По идее, написанное должно выводить 0, т.к. вызывается ф.-ия для k=0. Но выводит 1.1111, почему-то...
Только что присвоил y=sum(1,0), и все равно вывелось 1.1111. что не так?
Листинг программы
- #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;
- }
Решение задачи: «Функция выводит не то, что ожидается»
textual
Листинг программы
- char cx, *p;
- for(p=s; сx=*p; p++) {
- // что-то делаем с cx
- }
Объяснение кода листинга программы
В данном коде выполняется цикл по символам строки s, при этом каждый символ копируется в переменную cx. Однако, в отличие от стандартного цикла for в языке C, здесь нет инкрементации переменной p, что приводит к тому, что p всегда остается указывать на один и тот же символ строки s. Вот список действий, выполняемых в данном коде:
- Инициализация указателя p значением s.
- Установка значения cx равным значению первого символа строки s (т.е. *p).
- Выполнение цикла, который будет выполняться до тех пор, пока значение cx не станет равным нулю (т.е. пока не будет выполнено условие сx=*p).
- Внутри цикла выполняется какая-то операция с переменной cx.
- После выполнения цикла переменная p не инкрементируется, поэтому она всегда остается указывать на тот же символ строки s. Следует отметить, что данный код не является оптимальным и может вызвать проблемы при работе с большими строками.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д