cout还是printf?C++教程 - How to C++系列专栏第4篇

这篇具有很好参考价值的文章主要介绍了cout还是printf?C++教程 - How to C++系列专栏第4篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于专栏

这个专栏是优质的C++教程专栏,如果你还没看过第一篇,点击这里去第0篇

本专栏一致使用操作系统:macOS Ventura,代码编辑器:CLion,C++编译器:Clang

感谢一路相伴的朋友们,感谢你们的支持 ^ _ ^

博主反馈非常及时,如果你在阅读的时候遇到问题,可以直接在评论区提问,博主看到后会在24小时内给你反馈

C++教程 - How to C++系列专栏第4篇


目录

关于专栏

前言

cout和printf的区别

语言层面

printf

cout

实现层面

printf

cout

类型安全是什么

总结

结语

快捷翻页

本文参考文章,书籍


前言

How to C++系列特别篇,让我们探讨一下到底是cout还是printf适合我们


cout和printf的区别

语言层面

printf

printf属于C语言stdio.h头文件,是C语言的组成部分,是C语言标准库中的函数,用于向标准输出设备按规定格式输出信息

cout

cout属于C++的iostream头文件,不同于printf,cout属于原生C++的输出

实现层面

我们知道,cout和printf的基础功能是一样的:在屏幕上打印我们要求输出的字符

printf

printf其实是C语言中的一种函数,printf实际上是调用了一个函数,C作为C++的子集,自然在C++中也可以使用printf,但并不具备类型安全(具体看下面)

cout

cout本质上来讲其实是一个对象,属于ostream类,ostream类在iostream中有定义,具备类型安全

类型安全是什么

类型安全是指在程序中,变量和表达式在赋值、运算和访问时,其类型是可靠且符合预期的。类型安全可以确保程序在运行时不会发生类型错误,例如变量值被赋予了错误的类型,或者使用了不正确的操作符

类型安全是编程语言设计中的一个重要概念,它有助于提高程序的可靠性和可维护性。在类型安全的语言中,编译器会根据类型信息检查程序的正确性,并捕捉可能存在的不安全或错误操作。这种早期错误检测可以避免程序在运行时出现崩溃或产生意外的结果

类型安全的语言通常具有以下特点:

  1. 静态类型检查:编译器在编译时对程序进行类型检查,而不是在运行时。这有助于在代码执行之前发现潜在的类型错误
  2. 强制类型转换:类型安全的语言通常不允许开发者直接将一种类型的值转换为另一种类型。相反,它们提供了强制类型转换的操作符,以确保类型转换是安全的
  3. 数组和字符串操作:类型安全的语言通常提供对数组和字符串的内置操作,这些操作是类型安全的,可以避免数组越界和字符串拼接错误
  4. 输入检查:类型安全的语言通常会进行输入检查,以防止非法或不安全的输入。例如,它们可以检查输入是否符合预期的格式或范围

值得注意的是,完全的类型安全并不总是可能的。有些语言可能会允许某些类型的未定义行为或类型错误。然而,类型安全仍然是一个有用的工具,可以帮助程序员避免许多常见的错误和问题

懵了?举个例子

假设我们有一个电子秤,我们可以用它来称量不同重量的物品

如果我们将一个重10公斤的物品放在电子秤上,然后将其设置为称量1公斤的物品,那么电子秤就会因为重量超出了预设范围而无法正常工作

在编程中,类型安全的作用类似于这个电子秤

假设我们有一个函数,该函数接受一个字符串作为输入,并将其转换为整数。如果我们将一个包含非数字字符的字符串传递给该函数,那么该函数就会因为无法将非数字字符转换为整数而抛出异常或错误。这就是类型安全的作用,它确保了程序在运行时不会因为类型错误而崩溃或产生意外的结果。

在现实生活中,类型安全的概念可以应用于许多不同的场景。例如,当我们使用银行卡支付时,我们的交易金额必须与卡的限额匹配,否则交易就会失败。当我们使用医疗设备时,我们必须确保输入的数据是正确的类型和范围,否则可能会导致错误的诊断或治疗

总之,类型安全是一种编程概念,它确保了程序在运行时不会因为类型错误而崩溃或产生意外的结果。在现实生活中,类型安全的概念可以应用于许多不同的场景

C语言在这方面做的并不好,在C语言中,变量的类型通常是在声明时确定的,如果大家学到后面会明白,实际上变量只是一个内存地址,这个地址存储特定类型的值。程序员可以直接访问该地址,并使用任何可用的数据类型。因此,在C中类型检查不是强制性的,而是由程序员自己负责的

与此相比,C++引入了静态类型检查,这意味着编译器会在编译时执行类型检查。C++中的每个变量都有其特定的类型,并且不允许直接将一个类型的值赋给另一个类型的变量,除非进行显式的类型转换


总结

其实我们可以看出,cout可能在某些环境下效率没有printf高,但总体来说,cout具备的功能确实跟优秀,并且具备类型安全,不会把程序员搞的一头雾水,满脸懵

当然,任何工具都有好有坏,在一些情况下确实printf更好用,cout也有缺点

在我们之后的学习中一般会使用cout作为输出


结语

作者会经常帮助有问题的小伙伴解决问题如果你有问题,可以直接到评论区指出,作者会在看到后到24小时内给予答复

如果本文有任何问题欢迎在评论去指出,如果喜欢这篇文章,希望能点赞评论关注

感谢一路相伴的朋友们,有你们是我的福气

如果你们身边有像你提起过这个领域的,或者希望可以和ta一起进步的,把这个专栏分享给ta吧

2400字,7个父项,2个子项,5个孙子项


快捷翻页

C++教程 - How to C++系列专栏第0篇

C++教程 - How to C++系列专栏第1篇

C++教程 - How to C++系列专栏第2篇

C++教程 - How to C++系列专栏第3篇


本文参考文章,书籍

参考文章

文心一言

C++ 中 printf 和 cout 什么区别? - 知乎

https://wenku.csdn.net/answer/9f0f30f47cc346d49f77ece1c2124349

C++ 中 printf 和 cout 什么区别? - 知乎

C++ 中 printf 和 cout 什么区别? - 知乎

参考书籍 

C++ Primer Plus文章来源地址https://www.toymoban.com/news/detail-647550.html

到了这里,关于cout还是printf?C++教程 - How to C++系列专栏第4篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++中的 cout 和 printf 用法

    C++是一种面向对象的编程语言,它继承了C语言的特点,同时也增加了许多新的特性。在C++中的cout 和 printf是两种常用的输出函数,它们都可以将数据显示在屏幕上,但是它们也有一些区别和优缺点。本文将详细说明这两种函数的区别及格式化输出的不同实现方法。 cout 是C+

    2024年02月05日
    浏览(32)
  • C++学习之旅 第二章 printf与cout

    目录 1.printf简介  2.printf的四种用法 2.1 printf(\\\"字符串\\\"); 2.2 printf(\\\"输出控制符\\\",输出参数); 2.3 printf(\\\"输出控制符1 输出控制符2  ,,,,,,,, \\\", 输出参数1, 输出参数2,....... ); 2.4 printf(\\\"输出控制符 非输出控制符 \\\",输出参数); 3.printf为什么需要输出控制符 4.cout简介 cout的三种用法 5

    2024年02月08日
    浏览(60)
  • Hexo教程,看这一篇就够了- How to系列

    目录 读者先看这里​​​​​ Bayi使用的软件版本: 更新记录 2023年7月30日 Hexo是什么 在此之前 Node.js 许可协议 选择安装地址 选择安装组件 安装 检查安装 更改全局模块所在路径和缓存路径地址 Git 下载并打开Git安装包 选择安装路径 选择安装组件 选择开始菜单文件夹名称

    2024年02月14日
    浏览(37)
  • Hexo搭建教程?看这一篇就够了- How to系列

    目录 读者先看这里​​​​​ Bayi使用的软件版本: 更新记录 2023年7月30日 Hexo是什么 在此之前 Node.js 许可协议 选择安装地址 选择安装组件 安装 检查安装 更改全局模块所在路径和缓存路径地址 Git 下载并打开Git安装包 选择安装路径 选择安装组件 选择开始菜单文件夹名称

    2024年02月14日
    浏览(41)
  • Rust教程:How to Rust-变量

    本文为第1篇 本专栏是优质Rust技术专栏,推荐精通一门技术栈的蟹友,不建议完全无计算机基础的同学 感谢Rust圣经开源社区的同学,为后来者提供了非常优秀的Rust学习资源 本文使用: 操作系统macOS Sonoma 14 / Apple M1 编译器:Rustc Cargo 感谢一路相伴的朋友们,感谢你们的支持

    2024年03月15日
    浏览(52)
  • Rust教程:How to Rust-基本类型

    本专栏是优质Rust技术专栏,推荐精通一门技术栈的蟹友,不建议完全无计算机基础的同学 感谢Rust圣经开源社区的同学,为后来者提供了非常优秀的Rust学习资源 本文使用: 操作系统macOS Sonoma 14 / Apple M1 编译器:Rustc Cargo 感谢一路相伴的朋友们,感谢你们的支持 ^ _ ^ Rust教

    2024年04月12日
    浏览(40)
  • C++ | cout与cin << >> endl 是什么意思

    C++的输入输出 使用C++输入输出更方便,不需要向printf、scanf输入输出时,那样需要手动控制格式 C++的输入输出是可以自动识别变量类型的。 cout和cin是全局的流对象 endl是特殊的C++符号,表示换行输出 他们都包含在头文件iostream头文件中 cout与cin的含义 Cout标准输出对象,是

    2024年01月25日
    浏览(37)
  • How to Write and Publish a Scientific Paper-How to Write the Results

    至此,我们进入了本文的核心- -数据。论文的这一部分称为结果部分。 与流行的信念相反,你不应该通过描述你在材料和方法部分无意中遗漏的方法来开始结果部分。 结果部分通常有两个成分。首先,你应该对实验进行某种整体的描述,提供大概的图景,而不必重复先前在

    2024年02月09日
    浏览(45)
  • How to Use Glslang

    Execution of Standalone Wrapper 要使用独立的二进制形式,请执行glslang,它将打印一条使用语句。基本操作是给它一个包含着色器的文件,它会打印出警告/错误以及可选的 AST。 应用的特定于阶段的规则基于文件扩展名: vert 顶点着色器 tesc 曲面细分控制着色器 tese 曲面细分评估着

    2024年02月14日
    浏览(38)
  • 毕业直接后端开发岗,选择C++还是java?

    我们来分析一下,2020 年 4 月,Java 仍然是 TIOBE 指数的第一名;但紧接着 5 月份,Java 就不得不将第一名让给了 C。后来在 2021 年,Python 也变得势不可挡,超越了 Java。现在看起来,C++ 则将是下一个超越 Java 的语言。具有高性能的高级编程是 C++ 表现出色的关键原因。C++ 语言每

    2024年02月04日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包