#include <stdio.h> void putStrLn(const char* s) { printf("[%s]\n", s ? : "null pointer"); /* 条件演算子 ( ? : ) の第2オペランドを省略 */ } int main(int argc, char* argv[]) { putStrLn("hoge"); putStrLn(""); putStrLn(NULL); return 0; } 実行結果。 [hoge] [] [null pointer] 条件演算子(三項演算子とも)である ? : の書式は、 operand1 ? operand2 : operand3 ですが、このうち第2オペランドを省略すると、第1オペランドの値が真の場合、式の値は第1オペランドの値になる…というのがありまして。これをどこで覚えたか忘れてしまい、そもそもこれは仕様