int roll = RANDOM(1, 100);
printf("You rolled %s %d.", (roll == 8 ? "an" : ((roll > 79 && roll < 90) ? "an" : "a")));
潜在输出:
You rolled a 12.
You rolled an 8.
You rolled an 84.
You rolled a 97.
为 1 到 100 之间以 8 开头的数字确定“a”或“an”的内联逻辑工作正常。
1:有没有更优雅的方式来做到这一点?
2:处理所有以 8 开头的整数值类型的最佳方法是什么?
最佳答案
嗯(roll == 8 || roll > 79 && roll < 90 ? "an" : "a")
对于初学者来说更简洁。
你可以有一个基于 2 字符缓冲区的解决方案 buf
和 snprintf(buf, 2, "%d", roll)
,但这似乎有点矫枉过正。正如评论中所指出的,仅查看第一个数字不足以保证语法完全正确,因此最好坚持使用特殊情况的析取。
关于c++ - 在任何以 8 开头的数字之前选择 "a"或 "an",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29449911/