草庐IT

prinf-cout

全部标签

C++ float vs double cout setprecision 奇怪之处(新手)

谁能解释为什么当我使用setprecision()时这两个相同值的变量可以输出不同的值?#include#includeintmain(){floata=98.765;doubleb=98.765;//std::couta的输出将为98.76,而b的输出将为98.77。 最佳答案 那些变量不具有相同的值。当您将98.765的字面值double硬塞进float时,它必须进行最佳匹配,并且会损失一些精度。如果将精度更改为50,您可以很容易地看到这一点,您还会看到即使是double也不能准确表示该值:98.7649993896484375

c++ - 如何对写入 stdout/std::cout 的函数进行单元测试

我正在研究单元测试。据我所知,几乎所有单元测试都使用返回值或输出参数作为其测试用例中的预期值。没有返回值或输出参数的函数的期望值是多少?例子:voidunit_test(){cout当然,这个功能很简单。所以,这个功能似乎不需要单元测试。但这只是一个示例。你认为unit_test函数有副作用吗?你会如何测试它? 最佳答案 如果您正在编写一个您知道应该测试的函数,那么您应该将其设计为在您的框架中可测试。在这里,如果您的测试是在您可以验证流程输出的流程级别完成的,那么写入std::cout就可以了。否则,您可能希望将输出流作为函数的参数

c++ - cout << i << "\n"[ i == n ] 术语在做什么?

在这个声明中for(i=1;icout语句[i==n]中的最后一项在做什么?我猜这个循环打印空格分隔的数字。 最佳答案 这是一种迟钝的写法:(i==n?'\n':'')即当i==n时,打印一个换行符,否则打印一个空格。想法是用空格分隔数字,并在打印完所有数字后换行。 关于c++-cout https://stackoverflow.com/questions/47805547/

c++ - cout 能以某种方式改变变量吗?

所以我有一个看起来像这样的函数:floatfunction(){floatx=SomeValue;returnx/SomeOtherValue;}在某些时候,这个函数会溢出并返回一个非常大的负值。为了尝试准确地追踪发生这种情况的位置,我添加了一个cout语句,使该函数看起来像这样:floatfunction(){floatx=SomeValue;cout成功了!当然,我通过使用double完全解决了这个问题。但是我很好奇为什么这个函数在我计算它的时候能正常工作。这是典型的,还是其他地方可能存在我遗漏的错误?(如果有帮助,存储在float中的值只是一个整数值,而不是特别大的值。我只是将它

c++ - std::cout 是否有返回值?

我很好奇std::cout是否有返回值,因为当我这样做时:cout打印了一些十六进制代码。这个打印出来的值是什么意思? 最佳答案 因为cout的操作数是用户定义的类型,表达式实际上是一个函数调用。编译器必须找到最好的operator匹配操作数,在本例中都是std::ostream类型.有许多候选运算符重载可供选择,但我将只描述按照通常的重载解析过程最终被选中的那个。std::ostream有一个转换运算符,允许转换为void*.这用于启用测试流的状态作为bool条件(即,它允许if(cout)工作)。右手操作数表达式cout隐式转换

c++ - 如何从 cout 回滚行?

我正在编写一个任务监控程序,它使用cout更新任务的进度。我想每行显示一个任务进度,因此我必须回滚控制台的几行。我坚持使用“多个”,因为\b完成一行的工作,但不会删除行与行之间的\n。我尝试了std::cout.seekp(std::cout.tellp()-str.length());但tellp()返回-1(失败)。 最佳答案 你可以做到cout跳转到当前行的开头,但向上移动是系统特定的。对于Unix,请参阅mantermcap和manterminfo(并搜索cursor_up)。在ANSI兼容终端(例如Unix上可用的大多数现

c++ - cout 是否保证在静态去初始化期间可用?

我有一个准单例类(准单例在大多数情况下指的是单个对象是一个静态函数,但用户也可以构建自己的本地拷贝以供短期使用)我想要从其析构函数写入cout,并想知道cout是否保证在程序终止后的静态去初始化阶段可用。来自thisquestion似乎答案是肯定的(函数静态初始化对象的析构函数应该从它们构造时的相反顺序调用,这应该是在cout设置之后),但我想检查一下。//Countcallstoaloggingfunctionfromsomepointinourcode,todetermine//howmanytimesitgetsexecutedduringarun,thenreportcalls

c++ - 以编程方式忽略 Cout

有人知道是否有切换所有cout的技巧吗?不打印可见输出的功能?我正在尝试将我和其他一些人编写的一些代码拼凑在一起以进行演示。我宁愿不将输出重定向到文件,而是想要一个在Windows和Linux之间具有一定兼容性的解决方案。在我的场景中,我有很多行代码,其中包含各种#defines控制某些方法何时产生调试输出。我想调用类似的东西:cout.off();driverForAffectA();driverForAffectB();cout.on();printSpecializedDebug();exit(0); 最佳答案 您可以更改co

c++ - C++ 中的标准输出流是否是线程安全的(cout、cerr、clog)?

我知道目前的C++中没有线程的概念,但是thisarticleissaying:Atypesafe,threadsafe,portableloggingmechanism.....Thefprintf()functionisthreadsafe,soevenifthislogisusedfromdifferentthreads,theoutputlineswon'tbescrambled.cout、cerr和clog呢?我认为这个问题也适用于C++中的所有流类型,例如fstream和stringstream。 最佳答案 文章声明了f

c++ - 关于cerr cout和clog的问题

这个问题在这里已经有了答案:Whatisthedifferencebetweencout,cerr,clogofiostreamheaderinc++?Whentousewhichone?(7个答案)关闭7年前。谁能解释一下cerrcout和clog之间的区别以及为什么会提出不同的对象?我知道区别如下:1)cout可以重定向但是cerr不能2)clog可以使用buffer。我对第2点感到困惑,如果有人可以详细说明,我将不胜感激。