2014-01-31 3 views
1

я знаю, что это, вероятно, глупо и простой вопрос, но я довольно новый для programming.I иметь следующий вопрос о, если оператор я видел в одном program.Here это код:C странно, если заявление

d= -12.4; 
    if(d) printf("%d \n", abs((int)d)); 
    else printf("%d \n",(int)(d)); 

Почему он печатает 12 вместо -12. Я имею в виду, почему это утверждение верно?

if(d) 

Я думал, что инструкция с одной переменной не является даже синтаксически правильной.

ответ

6

В основном

if(d) 

такая же, как

if(d != 0) 

это совершенно правильный код.

+0

О, теперь это имеет смысл, спасибо. –

+1

@ user3183584 дополнительно вы печатаете значение abs(), используя% d, что является причиной того, что плавающая часть не появляется –

6

В C любое выражение, которое не равно нулю, считается истинным. И идентификаторы (например, имя переменной) являются допустимым выражением, иначе вы не сможете использовать имена переменных в любом месте.

Смежные вопросы