为什么这不适用于c中的printf()

ami*_*n__ 3 c string printf

我有以下代码:

    int i=1;
    printf((i==1)?" ":"   " "hello");
    printf(" " "hello");
Run Code Online (Sandbox Code Playgroud)

我惊讶地发现第一个printf只提供一个空格作为输出,第二个printf输出一个空格后跟字符串hello.在第一个的情况下,我期待输出像第二个.但这里有什么我想念的东西.请在这件事上给予我帮助 ...

Cat*_*lus 8

字符串文字连接是一个词法功能,这意味着:

(i==1) ? " " : "   " "hello"
Run Code Online (Sandbox Code Playgroud)

与此相同:

(i==1) ? " " : "   hello"
Run Code Online (Sandbox Code Playgroud)

现在应该很清楚为什么你会得到你得到的结果.