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

02-26 1386阅读

关于专栏

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

cout还是printf?C++教程 - How to C++系列专栏第4篇
(图片来源网络,侵删)

本专栏一致使用操作系统: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

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]