Десятичные значения считаются истинными в C? - PullRequest
2 голосов
/ 01 апреля 2020

В настоящее время я пишу условный оператор, который оценивает значения с плавающей запятой.

float condition;
if(condition)
  // then do something
else
  // do something else

Если условие, скажем, 0,5 или 1/2, будет ли оператор считаться Истинным или Ложным? Другими словами, будет ли программа выполнять часть "then" или "else"?

1 Ответ

3 голосов
/ 01 апреля 2020

Если условие равно 0, оно считается ложным, в противном случае оно считается истинным.

Раздел 6.8.4.1 C стандарта относительно оператора if состояния:

1 Управляющее выражение оператора if должно иметь скалярный тип

2 В обеих формах первый подстановка выполняется, если выражение сравнивается с неравным 0

Типы с плавающей точкой считаются скалярными типами, поэтому они действительны как выражение if.

. Это также работает для значения бесконечности и NaN, оба из которых не равны 0.

...