C++ printf scanf格式化输入输出 以及getchar

 

一、C/C++变量类型细节:

对于C/C++来说,最主要的类型也就是整型、浮点型、字符型这三种,对于每一个类型又有不同的条线下的使用类型。

1、整型:

整型又可以分为int(也陈伟long int)、short(short基本用不到)、long long。对于这三种变量类型,其长度也不同。

值得注意的是在刷题中对于条件的把握。例如甲级题目中有一道题,其目的是判断64位的数字相加之和,此时就不能单纯的使用int来进行存储,而是要使用long long来进行存储,并且要进行溢出判断。

对于int来说,一个整型占用32位,也就是4字节。取值范围是正负2的31次方-1(之所以是31次方,原因是因为一位符号位),也可以简单记为大致范围为10^9范围内的数。

对于long long来说,一个整数占用64位,取值在正负2的63次方范围内,数的大小范围为10^10或者10^18次方内

2、浮点型:

浮点型有float和double。但是注意,最好只用double,因为相同条件下容易出现float精度过低的情况。float精度在6-7位,double精度则有15-16位。

3.字符型:

字符型有字符常量和字符变量。字符变量就是自己定义的变量,常量这是指具有代表数值的字符,例如标准ASCII码。ASCII码范围在0-127,其中0-9对应48-57,A-Z对应65-90,a-z对应97-122。对于大小写字母来说,规律是小写的ASCII码要比大写的大32位。

所谓的字符串常量就是若干字符组成的串,和C++中的string类似。

4.布尔型:

对于布尔型唯一要注意的是int转bool的转换问题。对于整型常量对bool型赋值是,只有零才会赋值为0,非零则会赋值为1,要注意这一点。

 

二、C的输入和输出:

最近自己经过刷题,也得知cout和cin的不便,不能格式化输入,并且输出也是大费周折,所以用C的printf和scanf最为方便。

1.scanf函数:

如下图所示,为scanf函数输入的格式符号。

其中注意字符串的输入。由于字符串的名字已经指向了第一个地址空间,所以无需再做取地址运算。

C++ printf scanf格式化输入输出 以及getcharC++ printf scanf格式化输入输出 以及getchar

scanf最大的一个优点就是可以进行格式化读入。例如对于年月日的读取,XX:XX:XX,如果采用cout会及其麻烦,甚至牵扯到字符串切割,使用scanf就极其简单:scanf("%d:%d:%d",&a,&b,&c)

其中,最值得注意的就是空格读入的问题,空格读入则是根据情况而定的:

scanf对于其他格式符都是以输入空白符为结束判定标志的,除非使用%c把空格按照字符读入,否则其他都会跳过空格。

另外,对于字符数组,%s读入的时候以空格和换行读入作为结束的标志。

2.printf函数的使用:

和scanf函数类似,相关的输出格式如下所示:

C++ printf scanf格式化输入输出 以及getcharC++ printf scanf格式化输入输出 以及getchar

其中,有些类型的写法和scanf的略有不同。对于printf来说,输出中也可以掺杂类似于转义符换行符之类的东西。

对于printf来说,有三种格式化输出利器,可以很好的来帮助刷题中的数据格式生成:

(1)%md

可以将不足m位的int型变量按右对齐输出,可以视为缺位补空格;

(2)%0md

在右对齐输出的基础上进行补0输出;

(3)%.mf

保留浮点数的m位小数输出,注意,不是四舍五入,四舍五入应该使用math库中的round()函数;

3.getchar和putchar:

这两个函数都是用来输入单个和输出单个字符,多用于scanf不便使用的场景。

值得注意的是,getchar是可以识别换行符的,可以读入换行符,所以一定要注意输入的换行符问题;

原文链接: https://www.cnblogs.com/muyunlinling/p/12183430.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++ printf scanf格式化输入输出 以及getchar

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/191820

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午5:50
下一篇 2023年2月12日 下午5:51

相关推荐