C奇怪如果声明

Ton*_*eev 1 c if-statement

我知道这可能是一个愚蠢而容易的问题,但我对编程很新.我有一个关于我在一个程序中看到的if运算符的问题.这是代码:

  d= -12.4;
  if(d) printf("%d \n", abs((int)d));
  else printf("%d \n",(int)(d));
Run Code Online (Sandbox Code Playgroud)

为什么它打印12而不是-12.我的意思是为什么这句话甚至是真的?

if(d)
Run Code Online (Sandbox Code Playgroud)

我认为只有一个变量的语句甚至在语法上都不正确.

mat*_*975 6

基本上

if(d)
Run Code Online (Sandbox Code Playgroud)

是相同的

if(d != 0)
Run Code Online (Sandbox Code Playgroud)

它是完全有效的代码.


Som*_*ude 6

在C中,任何非零的表达式都被认为是真的.标识符(如变量名称)是一个有效的表达式,否则您将无法在任何地方使用变量名称.