当然ながら、言語ごとに真偽判定(true/false)の基準が違います。
特にスクリプト系の言語では、明示的に型を指定しないことが多いので、たまに問題になります。
たまたま手元にあった環境で、どんな値が真に判定されるのか、というのをまとめてみました。
新しい言語に突撃するときのメモ代わりにでもして頂ければ幸いです。
検証コードイメージ
a = 0
if a
print 'true'
else
print 'false'
end

凡例:
× は、コンパイルエラー
ー は、言語仕様にその値が存在しない
備考:
*”" というのは、ナル文字の値を指す(\0なので、実体はゼロという整数値)
array[] というのは、各言語での空の配列を指す
※1 C言語にfalseは存在しない
※2 配列のアドレスを指すため、真と評価される
※3 noticeが発生するが、設定や@で抑制可能
こうしてみると、やはりPHPは変態です。’0′ をfalseと判定する言語はあまりないですね。Webに特化しているのがよくわかります。$_GETなどは文字列で渡ってくるので、確かに手抜きに便利仕様です。
空配列をfalseと判定するのが、PythonとPHPというなんだかおもしろい組み合わせになりました。
良く忘れるけど、rubyはゼロという数字をtrueに判定するので注意が必要ですね。
結局、ミスのしようが無い Java / C# は安全で好きです。
また、ゼロは false、ほかは true と割り切ったC言語も、シンプルで好きです。
数年前に作ったミニアプリを公開してみました。
WinBottom
ウィンドウの最小化ボタンを右クリックすると、そのウィンドウが背面に移動するだけの常駐ソフトです。
くだらないですが、大型ディスプレイでは地味に便利です。
アイコンが猫の手なので、おすすめです。
極小なのでほとんど何も書いていないですが、もしソースが欲しい等の変な方がいたらご連絡ください。
Visual Studio 2010 beta特有の問題かもしれませんが、windows.hをincludeしたときに、以下のようなエラーが出る場合があります。
c:\program files (x86)\microsoft sdks\windows\v7.0a\include\objidl.h(11280): error C2061: 構文エラー : 識別子 ‘__RPC__out_xcount_part’
c:\program files (x86)\microsoft sdks\windows\v7.0a\include\objidl.h(11281): error C2059: 構文エラー : ‘)’
c:\program files (x86)\microsoft sdks\windows\v7.0a\include\objidl.h(11281): fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。

エラー
これは、objidl.hの読み込み順序が影響しているようです。
プロジェクトの設定→構成プロパティ→VC++ Directories→Include Directoriesで、objidl.hのある以下のディレクトリを追加すると直りました。
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include

Includeディレクトリの設定

Includeディレクトリを追加