自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Cout和Printf,選擇哪個更好?

開發(fā) 前端
網(wǎng)上經(jīng)??吹接腥苏f,不建議使用cout,而應(yīng)該更多使用printf,下面說說我的看法!個人看法是兩個都不建議用。

[[407763]]

本文轉(zhuǎn)載自微信公眾號「程序喵大人」,作者程序喵大人。轉(zhuǎn)載本文請聯(lián)系程序喵大人公眾號。

網(wǎng)上經(jīng)??吹接腥苏f,不建議使用cout,而應(yīng)該更多使用printf,下面說說我的看法!

個人看法是兩個都不建議用。

下面說下我的理由:

cout方式效率低:每次cout << endl,都會刷新一遍輸出緩沖區(qū)。

cout方式線程不安全:

  1. std::cout << "Hello " << "World "

上面代碼其實等同于:

  1. std::operator<<(std::operator<<(std::cout, "Hello "), "World "); 

相當(dāng)于調(diào)用了兩次operator<<,不保證調(diào)用兩次operator<<是線程安全的。

cout方式輸出復(fù)雜的格式很麻煩:比如我想輸出a + b = c:

  1. std::cout << a << " + " << b << " = " << c << std::endl; 

是不是很麻煩,那可以使用printf?

  1. printf("%d + %d = %d \n", a, b, c); 

但printf需要開發(fā)者填入變量格式,如果填寫有誤,有可能打印錯誤,也有可能crash:

  • 某個long long 型,使用%d打印會怎么樣?
  • 某個int32_t型,使用%lld打印會怎么樣?
  • 某個const char* 型,使用%d打印會怎么樣?
  • 某個float型,使用%d打印會怎么樣?

所以使用printf會給開發(fā)者帶來負(fù)擔(dān),一定要在打印前確認(rèn)變量的類型,并且一定要保證配置的輸出格式正確,我想大多數(shù)人可能都會在print某個變量前搜索過打印某個類型需要使用哪種格式吧?

那用啥呢?

cout配合format。

  1. std::cout << std::format("{} + {} = {} \n", a, b, c); 

使用format可以把上面的問題全都解決,C++20標(biāo)準(zhǔn)已經(jīng)全面支持使用std::format,如果不打算上C++20??梢钥紤]使用spdlog。

而且平時做項目時基本都使用第三方log庫,沒有幾個調(diào)用這種裸接口的。

歐了,打完收工!

 

責(zé)任編輯:武曉燕 來源: 程序喵大人
相關(guān)推薦

2017-03-02 14:52:46

2022-09-02 08:28:44

AWS多云云提供商

2019-07-27 09:40:56

MySQLPG數(shù)據(jù)庫

2016-08-05 14:23:15

系統(tǒng)

2020-12-08 10:25:56

HibernateMyBatis數(shù)據(jù)庫

2020-08-18 16:10:44

ManjaroArch LinuxLinux

2020-06-08 11:30:04

PGMySQL數(shù)據(jù)庫

2023-09-05 07:32:22

vscode開源故障

2021-04-12 08:01:21

GridFlexbox網(wǎng)格

2018-12-11 12:38:23

UbuntuMint發(fā)行版

2022-06-28 15:16:48

人工智能開發(fā)語言程序員

2022-05-22 07:32:36

RPython分析工具

2022-07-21 22:20:55

OzoneApache大數(shù)據(jù)

2021-05-31 08:57:31

Xcode與Andro

2017-03-22 09:25:26

MySQLPostgreSQL對比

2024-10-21 18:40:16

2021-09-28 09:00:00

開發(fā)JavaScript存儲

2023-12-11 07:37:08

mongodb經(jīng)緯度性能

2022-10-28 15:51:24

JavaScript開發(fā)Node.js

2019-09-25 14:30:12

Web前端Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號