为何使用cout与printf会输出额外值?1.00后出现5的原因是什么?
为什么cout和printf混用会出现额外输出?
你看到的额外输出是因为代码里的cout << printf("%.2f\n", x);其实执行了两次输出操作:
- 第一步先调用
printf函数:它会直接在控制台输出格式化后的1.00和换行符,同时返回成功输出的字符总数。这里1.00\n一共是5个字符('1'、'.'、'0'、'0'、换行符),所以printf返回整数5。 - 第二步cout会把printf返回的这个5输出到控制台,这就是你看到的第二行的5。
说白了,不是两种输出函数混用导致额外输出,而是你把printf的返回值当成输出内容传给了cout,相当于多做了一次输出动作。
如果只想输出1.00,二选一即可:
单独用printf:
printf("%.2f\n", x);
或者单独用cout(需要包含<iomanip>头文件):
cout << fixed << setprecision(2) << x << endl;
内容的提问来源于stack exchange,提问作者ImBatman
相关产品推荐
相关产品推荐

