在c中使用空字符



我想使用三元运算符和一个空字符"来正确拼写单词" neighbor ";(有或没有" ")。

我想做以下事情:

printf("There is %d neightbor%cn", nbNeighbors,  (nbNeighbors>1)?'s':'');

显然,我得到了一个错误error: empty character constant

我如何使用这个技巧在一个printf中获得正确的拼写?

可以使用不可打印的字符,但它们可能最终看起来像其他字符。

你最好使用字符串:

printf("There %s %d neighbor%sn",
nbNeighbors != 1 ? "are" : "is",
nbNeighbors,
nbNeighbors != 1 ? "s" : ""
);

OP: "我想使用三元运算符…">
除非练习是练习三元运算符,否则致力于一种特定的技术会使人对可能性视而不见。

下面的示例使用"无分支"代码来提供语法正确的结果(忽略美式拼写" neighbors ")

printf( "There %s %d neighbor%sn",
"areis" + (nbNeighbors == 1)*4,
nbNeighbors,
"s" + (nbNeighbors == 1) );

我从不推荐操纵真值,但是操纵真值有时会派上用场。

编辑
以上内容对一些人来说可能很难阅读/理解。

下面是同样的东西,表达方式略有不同:

printf( "There %s %d neighbor%sn",
!(nbNeighbors-1)*4 + "areis",
nbNeighbors,
!(nbNeighbors-1) + "s" );

经过测试,功能齐全,无分支。

最新更新