#include <stdio.h>

void foo(void){
printf("foo\n");
}

int main(int argc, char **argv){
char *ptr;
ptr = argc > 1 ? "ok" : (foo(), NULL);
return 0;
}

このプログラム、GCCでコンパイルしたときに、32ビットの処理系だと何も
警告が出ないのに、64ビットの処理系だと。
warning: pointer/integer type mismatch in conditional expression
という警告がでてしまいます。C言語としては問題ないような気がするのですが、
なぜこのような警告が出るのでしょうか。