第二讲专题 printf

文章介绍了C语言中的printf函数与C++中的cout对象在输出效率和格式控制方面的差异,指出printf通常更快且能精细控制输出格式。同时,提到了转义字符如 用于换行,以及不同类型的变量表示,如%d用于整型,%lf用于双精度浮点数。在C++中,空白字符的处理方式也被提及。
摘要由CSDN通过智能技术生成

printf 其实是 C 语言提供的函数。大多数情况下,它的速度比 cout 更快,并且能够方便地控制输出格式

注意:cout 与 printf 的实际速度差会随编译器和操作系统的不同发生一定的改变。如果想要进行详细对比,请以实际测试结果为准。

#include <iostream>
using namespace std;
int main ()
{
	printf("%d",1);
	return 0;
}

输出数字1

#include <iostream>
using namespace std;
int main ()
{
	printf("%d\n%d",1,2);
	return 0;
}

输出数字1后换行再输出2

其中,%d 表示读入/输出的变量是一个有符号整型(int 型)的变量。

类似地:

  1. %s 表示字符串。
  2. %c 表示字符。
  3. %lf 表示双精度浮点数 (double)。
  4. %lld 表示长整型 (long long)。根据系统不同,也可能是 %I64d
  5. %u 表示无符号整型 (unsigned int)。
  6. %llu 表示无符号长整型 (unsigned long long),也可能是 %I64u

这些现在只需了解即可之后才会学到

除了类型标识符以外,还有一些控制格式的方式。许多都不常用,选取两个常用的列举如下:

  1. %1d 表示长度为 1 的整型。在读入时,即使没有空格也可以逐位读入数字。在输出时,若指定的长度大于数字的位数,就会在数字前用空格填充。若指定的长度小于数字的位数,就没有效果。
  2. %.6lf,用于输出,保留六位小数。

这两种运算符的相应地方都可以填入其他数字,例如 %.3lf 表示保留三位小数。

什么是双精度浮点数长整型

这些表示变量的类型,会留到 变量 中统一讲解。

什么是/n?

\n 是一种 转义字符,表示换行。

转义字符用来表示一些无法直接输入的字符,如由于字符串字面量中无法换行而无法直接输入的换行符,由于有特殊含义而无法输入的引号,由于表示转义字符而无法输入的反斜杠。

常用的转义字符有:

  1. \t 表示制表符。
  2. \\ 表示 \
  3. \" 表示 "
  4. \0 表示空字符,用来表示 C 风格字符串的结尾。
  5. \r 表示回车。Linux 中换行符为 \n,Windows 中换行符为 \r\n。在 OI 中,如果输出需要换行,使用 \n 即可。但读入时,如果使用逐字符读入,可能会由于换行符造成一些问题,需要注意。例如,gets 将 \n 作为字符串结尾,这时候如果换行符是 \r\n\r 就会留在字符串结尾。
  6. 特殊地,%% 表示 %,只能用在 printf 或 scanf 中,在其他字符串字面量中只需要简单使用 % 就好了。

什么字符面

「字面量」是在代码里直接作为一个值的程序段,例如 3 就是一个 int 字面量,'c' 就是一个 char 字面量。我们上面写的程序中的 "hello world" 也是一个字符串字面量。

不加解释、毫无来由的字面量又被称为「魔术数」(magic number),如果代码需要被人阅读的话,这是一种十分不被推荐的行为。

以上不做要求

拓展:

C++ 中的空白字符

在 C++ 中,所有空白字符(空格、制表符、换行),多个或是单个,都被视作是一样的。(当然,引号中视作字符串的一部分的不算。)

因此,你可以自由地使用任何代码风格(除了行内注释、字符串字面量与预处理命令必须在单行内),例如:

#include <iostream>

   using   namespace  
     std;
 int 

    main(){
int/**/x, y;  cin
>> x >>y;
                cout <<
          y  << endl   
     << x

          ;

    return       0;     }

当然,这么做是不被推荐的。

一种也被广泛使用但与 OI Wiki 要求的码风不同的代码风格:

#include <iostream>
using namespace std;
int main()
{
    int x, y;
	cin >> x >> y;
	cout << y << endl << x;
	return 0;
}

这样看起来是不是舒服很多呢?

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值