Несколько дней назад мне пришла в голову странная идея, которая странным образом манипулирует оператором if();
. Перейдем к простому коду.
Код:
if(printf("blahblah\n");{
}
Моя идея:
1.) Мне кажется, этот код всегда будет оцениваться как истинный (мое предположение), поскольку условие теста заменяется вызовом функции..
Итак, сегодня я выполняю упражнение, предоставленное книгой (просто, чтобы помочь мне обновить то, что я узнал несколько дней назад). Это код.
Код:
#include <stdio.h>
int main(void) // This program would add up the value enter by user , for e.g with the
{ //input of 20 , it will print out the sum of 1+2+3+4+5.....20.
int count , sum , size;
count = 0;
sum = 0;
printf("Enter a value to find the sum of it from 1 : ");
scanf("%d" , &size);
while (count++ < size)
sum = sum + count;
printf("sum = %d\n" , sum);
return 0;
}
Используя мою идею о первом коде, я изменил второй код в этом.
#include <stdio.h>
int main(void)
{
int count , sum , size;
count = 0;
sum = 0;
printf("Enter a value to find the sum of it from 1 : ");
while (scanf("%d" , &size) && count++ < size )
sum = sum + count;
printf("sum = %d\n" , sum);
return 0;
}
Вопрос:
1.) Исходя из предположения, сделанного мной в первом коде, функция scanf()
предполагает, что она всегда оценивается как true. Вот почему второе условие теста count++ < size
является тем, которое определяет, является ли оператор в *Оператор 1041 * будет выполнен или нет.
2.) Но когда я запускаю программу, я ввожу 30, но она не работает, программа просто останавливается, ничего не делая после того, как я нажму enter.
3.) Я пытаюсь переключиться в тестовое состояние с помощью `count ++
4.) После этого я получаю следующий результат:Разное. Когда я пытаюсь запустить программу, программа выполняет вторую printf()
инструкцию функции и распечатывает sum = 0
.
Ваша помощь очень ценится, исправьте меня за ошибки. Я готовучиться на этом.