なんか判り辛いね
if (l->m_subTypeType == CTNCT_INT
|| (l->m_subTypeType == CTNCT_FLOAT
  && !intOnly))

だったら

switch( l->m_subTypeType ){
case CTNCT_INT :
case CTNCT_FLOAT:
if( 0== intOnly ) ....
}

こんな感じに別けると思うよ  ! は勘違いしやすいから 自分は0== にしてる。 どっちでもいいけどね