第七章 基本类型
创始人
2024-06-02 15:13:16
0

第七章 基本类型



目录

  • 一. 整数类型
  • 二. 浮点类型
  • 三. 字符类型
  • 四. 类型转换
  • 五. 类型定义
  • 六. Sizeof运算符



一. 整数类型

  1. 概述

  整数类型的值是整数,分为两大类:有符号型和无符号型。有符号整数如果为正数或零,那么最左边的位为0,如果是负数,那么符号位为1。不带符号位的是无符号整数。默认情况下是有符号的,若要告诉编译器没有符号位,需要声明为unsigned类型。


  1. 尺寸

Int 32(在老的CPU上可能是16)
Long int
Short int
Singed int
Unsigned int
Long signed int
Long signed(省略int)
Long
Short
  首先,C标准要求short、int、long中的每一种类型都要覆盖一个确定的最小值取值范围。其次,int不能比short短,long不能比int短,但是他们可以一样。
  确定整数类型范围的一种方法是检查头,该头定义了表示每种整数类型的最大值和最小值的宏。


  1. C99中的整数类型

Long long int
Unsigned long long int
除以上之外,C99标准还允许在具体实现时定义扩展的整数类型。


  1. 整数常量

十进制%d,不能以0开头
八进制%o,必须以0开头
十六进制%x,总是以0x开头


  为了强制编译器把常量作为长整数来处理,只需要在后面加上一个字母L或l。
  无符号常量在后面加U或u。
  以上两个可以结合使用,顺序,大小写都无所谓。


  1. 读写整数

  读写无符号、短的和长的整数使用的一些转换说明符。


  当读或写无符号整数时,使用字母u、o或x代替转换说明中的d。如果使用了u说明符,那么读(或写)的数是十进制形式;o指明是八进制形式,而x指明是十六进形式。


  当读或写短整形数时,在d、o、u、x前面加上字母h


  当读或写长整形数时,在d、o、u、x前面加上字母l。


  转换说明符%e、%f、%g用于读和写单精度浮点数,而double和long double类型值则要求略微不同的转换。


  当读写double类型的数值时,在e、f、g前放置字母l: 注意:只能在scanf函数格式串中使用l,不能在printf函数格式串中使用。在printf函数格式串中,转换e、f、g可以用来写float型或double型值。


  当读或写long double类型的值时,在e、f、g、前放置字母L


  转换说明符%c允许scanf函数和printf函数对单独一个字符进行读写操作。在读入字符前,scanf 函数不会跳过空白字符。如果下一个未读字符是空格,那么scanf 函数将读入空格。为了强制scanf 函数在读入字符前跳过空白字符,需要在格式串转换说明符%c前面加上一个空格。


  1. 转换说明符及作为结果的打印输出

注意
以下五条转换符(序号6-序号10)参考与整理来自于:
C语言中文网:http://c.biancheng.net/
C语言网:https://blog.dotcpp.com/
更多转换符等知识详见上面网站

转换说明符 输出
%a 浮点数、十六进制数字和p-记数法(C99)
%A 浮点数、十六进制数字和p-记数法(C99)
%c 一个字符
%d 有符号十进制整数
%e 浮点数、e-记数法
%E 浮点数、E-记数法
%f 浮点数、十进制记数法
%g 根据数值不同自动选择%f或者%e。%e格式在指数小于-4或者大于等于精度时使用
%G 根据数值不同自动选择%f或者%E。%E格式在指数小于-4或者大于等于精度时使用
%i 有符号十进制整数(与%d相同)
%o 无符号八进制整数
%p 指针(就是指地址)
%s 字符串
%u 无符号十进制整数
%x 使用十六进制数字0f的无符号十六进制整数
%X 使用十六进制数字0F的无符号十六进制整数
%% 打印一个百分号


  1. printf()修饰符

修饰符 意义
标志 五种标志(-、+、空格、#和0)都将在表三中描述,可以使用零个或多个标志
digit(s) 字段宽度的最小值。如果该字段不能容纳要打印的数或者字符串,系统会使用更宽的字段。示例:“%4d"
.digit(s) 精度。对于%e、%E和%f转换,是将要在小数点的右边打印的数字的位数。对于%g和%G转换,是有效数字的最大位数。对于%s转换,是将要打印的字符的最大数目。对于整数转换,是将要打印的数字的最小位数;如果必要,要使用前导零來达到这个位数。只使用”.“表示其后跟随的一个零,所以%.f与%.0f相同。示例:“%5.2f”打印一个浮点数,他的字段宽度为5个字符,小数点后友联个数字。
h 和整数转换说明符一起使用,表示一个short int 或者 unsigned short int 类型数值。示例:“%hu”、“%hx”和“%6.4hd”
hh 和整数转换说明符一起使用,表示一个signed char 或者unsigned char 类型数值。 示例:“%hhu”、“%hhx“和“%6.4hhd“
j 和整数转换说明符一起使用,表示一个intmax_t 或 uintmax_t值。示例:“%jd“ 和“%8jX“
l 和整数说明符一起使用,表示一个long int 或者 unsigned long int 类型值。示例:“%ld“ 和“%8lu“
ll 和整数说明符一起使用,表示一个long long int 或 unsigned long long int类型值(C99)。示例:“%lld“和“%8llu“
L 和浮点转换说明符一起使用,表示一个long double值。示例:”%Lf” 和“%10.4Le“
t 和整数转换说明符一起使用,表示一个ptrdiff_t值(与两个指针之间的差相对应的类型)(C99)。示例:“%td“ 和 “%12ti“
z 和整数转换说明符一起使用,表示一个size_t值(sizeof 返回的类型)(C99)。示例:“%zd“ 和 “%12zx“


  1. printf()的标志

修饰符 意义
- 项目是左对齐的,也就是说,会把项目打印在字段的左侧开始处。示例:“%-20s“
+ 有符号的值若为正,则显示带加号的符号;若为负,则带减号的符号。示例:”%+6.2f“
(空格) 有符号的值若为正,则显示时带前导空格(但是不显示符号);若为负,则带减号符号。+标志会覆盖空格标志。示例:“% 6.2f“
#使用转换说明的可选形式。若为%o格式则以0开始;若为%x和%X格式,则以0x或0X开始,对于所有的浮点形式,#保证了即使不限任何数字,也打印一个小数点字符。对于%g和%G格式,它防止尾随零被删除。示例:“%#o“、 ”%#8.0f“ 和 “%+#10.3E“
0 对于所有的数字格式,用前导零而不是空格填充字段宽度。如果出现-标志或者指定了精度(对于整数)则忽略改标志。示例:“%010d“ 和 “%08.3f“


  1. ANSIC中scanf()的转换说明符

转换说明符 意义
%c 把输入解释成一个字符
%d 把输入解释成一个有符号十进制整数
%e,%f,%g,%a 把输入解释成 一个浮点数(%a是C99标准)
%E,%F,%G,%A 把输入解释成一个浮点数(%A是C99标准)
%i 把输入解释成一个有符号十进制整数
%o 把输入解释成一个有符号八进制数
%p 把输入解释成一个指针(地址)
%s 把输入解释成一个字符串;输入的内容以一个非空白字符作为开始,并且包含直到下一个空白字符的全部字符
%u 把输入解释成一个无符号十进制整数
%x,%X 把输入解释成一个有符号十六进制整数


  1. scanf()的转换修饰符

修饰符 意义
* 滞后赋值。示例:“%*d“
digit(s) 最大字段宽度;在达到最大字段宽度或者遇到第一个空白字符时(不管哪一个先发生都一样)停止对输入项的读取。示例:“%10s“
hh 把整数读作signed char 或者 unsigned char 。示例:“%hhd“ ”%hhu“
ll 把整数读作long long 或者 unsigned long long (C99)。示例:“%lld“ ”%llu“
h,l或L “%hd“ 和 “%hi“指示该值将会存储在一个short int 中。
“%ho“ 和 “%hx“ 和“%hu“指示该值将会存储在一个unsigned short int中。
“%ld“ 和 “%li“指示该值将会存储在一个long中。
“%lo“ 和 “%lx“ 和 “%lu“ 指示该值将会存储在一个unsigned long中。
“%le“ 和 “%lf“ 和 “%lg“知识该值以double类型存储。将L(而非l)与e、f和g一起使用指示该值以long double类型存储。
如果没有这些修饰符,d、i、o、和x知识int类型,而e、f和g指示float类型


二. 浮点类型

  1. 概述
      三种浮点类型:float、double、long double
      在C99中,浮点类型分为两种,一种是实浮点类型(float、double、long double),另一种是复数类型(float_Complex、double_Complex、long double_Complex)


  1. 浮点常量
    书写方式例子:
    57.0 57. 57.0e0 57E0 5.7e1 5.7e+1 .57e2 570.e-1
      浮点常量必须包含小数点和指数。如果有指数,需要在指数数值前放置字母E或e。+或-可以出现在字母E或e的后面。


三. 字符类型

  1. 概述
      Char类型变量可以用于任意单字符赋值,这些字符常量需要用‘’括起来,而不是双引号。


  1. 字符操作
      C语言把字符当作小整数进行处理。(所有字符都是以二进制形式编码的)
      字符常量本质是int而不是char。


  1. 有符号字符和无符号字符
      Char类型分为有符号型和无符号型。通常,有符号型的取值范围是-128至127,无符号字符的取值范围则是0-255。C标准没有说明普通char类型数据是有符号型还是无符号型。
      C标准允许使用单词signed和unsigned来修饰char类型。C89中使用术语整值类型来统称字符类型和整数类型。枚举类型也属于整值类型。C99中_Bool型是无符号整数类型。


  1. 算术类型
      整数类型和浮点类型统称为算数类型。


  1. 转义序列
    转义序列一共有两种:字符转义序列和数字转义序列。
    \a 警报
    \b 回退
    \f 换页
    \n 换行
    \r 回车
    \t 水平制表符
    \v 垂直制表符
    \
    ? ?
    \’ ‘
    \” “

#define ESC ‘\33’


  1. 字符处理函数
    例子:大小写字母转换
#include int main() {char ch;scanf("%c", &ch);if ('a' <= ch && ch <= 'z')ch = ch - 'a' + 'A';printf("ch=%c", ch);getchar();return 0;
}


toupper库函数

#include 
#include int main() {char ch;scanf("%c", &ch);
//
//	if ('a' <= ch && ch <= 'z')
//		ch = ch - 'a' + 'A';
//	printf("ch=%c", ch);ch = tolower(ch);printf("%c", ch);//	if (toupper(ch) == 'A')
//		printf("hello");getchar();return 0;
}


  1. Getchar和putchar读写字符
    Putchar用于写单个字符:putchar(ch)
    Getchar函数返回的是int类型而不是char类型
#include 
#include int main() {char ch;do {scanf("%c", &ch);} while (ch != '\n');//用getchar来写上面的代码do {ch = getchar();} while (ch != '\n');//精简循环while ((ch = getchar()) != '\n');getchar();return 0;
}


while (getchar() != ‘\n’)这个循环就是C语言非常著名的惯用法。
while ((ch = getchar()) == ‘ ')


四. 类型转换

强制转换表达式 (类型名)表达式


五. 类型定义

Typedef long int Bool;
Bool flag;


六. Sizeof运算符

Sizeof (类型名)
允许程序存储指定类型值所需要空间的大小。



本篇博客为本人学习C语言时的详细笔记,如有错误之处,还望各位指正。
文章为原创,如要转载请注明出处

相关内容

热门资讯

民主生活会主持词 民主生活会主持词  一、主持词简介  由主持人于节目进行过程中串联节目的串联词。如今的各种演出活动和...
2022年央视春节联欢晚会主... 2022年央视春节联欢晚会主持词  借鉴诗词和散文诗是主持词的一种写作手法。在现今人们越来越重视活动...
少先队建队日主持词 少先队建队日主持词  什么是主持词  由主持人于节目进行过程中串联节目的串联词。如今的各种演出活动和...
晚会节目串词主持稿 晚会节目串词主持稿  在现在社会,很多地方都会使用到主持稿,通过主持稿的写作将主题贯穿于所有的节目之...
幼儿园开园揭牌剪彩仪式主持词 幼儿园开园揭牌剪彩仪式主持词  主持词要把握好吸引观众、导入主题、创设情境等环节以吸引观众。在一步步...
公司辞旧迎新晚会主持词串词   男:尊敬的各位领导、各位来宾,  女:亲爱的同事们  合:大家下午好!  男:光阴似箭,岁月如梭...
纯中式婚礼主持词 纯中式婚礼主持词(通用5篇)  主持词是主持人在台上表演的灵魂之所在。在现在的社会生活中,越来越多的...
悟空传的经典台词 悟空传的经典台词  1、我曾深爱过,我不在乎结局。  2、我知道天会愤怒,那,你知不知道,天也会颤抖...
最有创意的广告词(经典 最有创意的广告词(经典  01 钱不是问题,问题是没钱。  02 钻石恆久远,一颗就破產。  03 ...
毕业感谢致辞 关于毕业感谢致辞(精选15篇)  无论是在学校还是在社会中,大家都写过致辞吧,致辞的措词造句要考虑与...
年会嘉宾简短致辞 年会嘉宾简短致辞  在日复一日的学习、工作或生活中,大家总少不了要接触或使用致辞吧,致辞具有很强的实...
成长礼主持稿 成长礼主持稿(通用8篇)  在日常生活和工作中,需要使用主持稿的情况越来越多,主持稿是在晚会、联欢会...
电视剧《放羊的星星》经典台词 电视剧《放羊的星星》经典台词  在现实社会中,用到台词的地方越来越多,台词是一种特殊的,也是很难掌握...
抓周仪式主持词 抓周仪式主持词范文  主持词是主持人在台上表演的灵魂之所在。在如今这个中国,主持词是活动、集会等的必...
年终总结大会主持词结束语 年终总结大会主持词结束语  主持词是各种演出活动和集会中主持人串联节目的串联词。时代不断在进步,主持...
纯中式婚礼主持词(2) 让我们共同举起手中的酒杯,共同祝福我们这一对知心爱人,祝福他们在爱的旅途上风雨相承,相濡以沫,真爱一...
幼儿园园庆主持词 幼儿园园庆主持词  利用在中国拥有几千年文化的诗词能够有效提高主持词的感染力。在人们积极参与各种活动...
篮球比赛开幕式主持词 篮球比赛开幕式主持词(通用5篇)  主持词可以采用和历史文化有关的表述方法去写作以提升活动的文化内涵...
六一儿童节活动节目的主持词 六一儿童节活动节目的主持词(精选7篇)  主持词是各种演出活动和集会中主持人串联节目的串联词。在当今...
公司员工的感谢词 公司员工的感谢词3篇  我们虽然是公司的一名员工,其实也是公司的主人,需要有将公司当成家的态度,态度...