标签:god getc attr sdn getch == classes apt 其他
对于C/C++来说,最主要的类型也就是整型、浮点型、字符型这三种,对于每一个类型又有不同的条线下的使用类型。
整型又可以分为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次方内。
浮点型有float和double。但是注意,最好只用double,因为相同条件下容易出现float精度过低的情况。float精度在6-7位,double精度则有15-16位。
字符型有字符常量和字符变量。字符变量就是自己定义的变量,常量这是指具有代表数值的字符,例如标准ASCII码。ASCII码范围在0-127,其中0-9对应48-57,A-Z对应65-90,a-z对应97-122。对于大小写字母来说,规律是小写的ASCII码要比大写的大32位。
所谓的字符串常量就是若干字符组成的串,和C++中的string类似。
对于布尔型唯一要注意的是int转bool的转换问题。对于整型常量对bool型赋值是,只有零才会赋值为0,非零则会赋值为1,要注意这一点。
最近自己经过刷题,也得知cout和cin的不便,不能格式化输入,并且输出也是大费周折,所以用C的printf和scanf最为方便。
如下图所示,为scanf函数输入的格式符号。
其中注意字符串的输入。由于字符串的名字已经指向了第一个地址空间,所以无需再做取地址运算。
scanf最大的一个优点就是可以进行格式化读入。例如对于年月日的读取,XX:XX:XX,如果采用cout会及其麻烦,甚至牵扯到字符串切割,使用scanf就极其简单:scanf("%d:%d:%d",&a,&b,&c)
其中,最值得注意的就是空格读入的问题,空格读入则是根据情况而定的:
scanf对于其他格式符都是以输入空白符为结束判定标志的,除非使用%c把空格按照字符读入,否则其他都会跳过空格。
另外,对于字符数组,%s读入的时候以空格和换行读入作为结束的标志。
和scanf函数类似,相关的输出格式如下所示:
其中,有些类型的写法和scanf的略有不同。对于printf来说,输出中也可以掺杂类似于转义符换行符之类的东西。
对于printf来说,有三种格式化输出利器,可以很好的来帮助刷题中的数据格式生成:
(1)%md
可以将不足m位的int型变量按右对齐输出,可以视为缺位补空格;
(2)%0md
在右对齐输出的基础上进行补0输出;
(3)%.mf
保留浮点数的m位小数输出,注意,不是四舍五入,四舍五入应该使用math库中的round()函数;
这两个函数都是用来输入单个和输出单个字符,多用于scanf不便使用的场景。
值得注意的是,getchar是可以识别换行符的,可以读入换行符,所以一定要注意输入的换行符问题;
C++ printf scanf格式化输入输出 以及getchar
标签:god getc attr sdn getch == classes apt 其他
原文地址:https://www.cnblogs.com/songlinxuan/p/12183430.html