【发布时间】:2011-07-03 08:39:11
【问题描述】:
显然,过多的 Python 或过多的任何动态类型语言对程序员来说都是不健康的。无论如何,我正在努力进行 C++ 练习,并且有一个关于语法的快速问题。我找不到任何应用它的源代码(如果可能的话)。
我可以使用包含 ?: 运算符作为 sprintf 参数的语句吗?这是我的不编译代码,所以你明白了:
return sprintf("The cosine of %2f %s is %2f", angle, (angleType == "g" ? "degrees" : "radians"), result);
angleType 是用户输入的值,指定他输入的是度数还是弧度。
角度是角度的值。
结果是实际的余弦值。
我想打印一条尽可能具有描述性的消息,所以我想出了这个。
如果可能的话?
谢谢!
【问题讨论】:
-
是
angleType字符还是字符串?angleType == 'g'更有意义 -
angleType 是 std::string
-
另外,永远不要使用
sprintf! 始终使用snprintf(或者在不可用的情况下,_snprintf)。sprintf很可能是比任何其他 C 标准库函数更多的缓冲区溢出攻击向量的原因。 -
@Martin:怎么样?他甚至没有正确使用
sprintf。sprintf不返回字符串;它打印到您指定的缓冲区,而他没有指定缓冲区。
标签: c++ printf logical-operators