c语言笔记 您所在的位置:网站首页 c语言有逻辑型数据吗为什么 c语言笔记

c语言笔记

2024-07-05 09:03| 来源: 网络整理| 查看: 265

基本数据类型

在这里插入图片描述

另外,整形还包括了长长整形 浮点型还包括长双精度型

一、整型数据

包括整型变量和整型常量 1、整型变量: 1)基本类型为int型,在整型的表示符号int前加上不同的修饰符,就可以将int型扩展成别的类型,如short int 2)用有符号(signed)和无符号(unsigned)A两个修饰符来表示正负,如果没有添加修饰符则默认为有符号型(signed) 3)有符号型(signed int a)可以简写为int a 无符号型(unsigned int b)可以简写为unsigned b 4)计算机中的数据用二进制表示,每一位(bit)就表示一个0或者1,而每8个位又组成一个字节,字节是计算机存储的单位 5)取值范围; -类型----------存储大小-----------值范围 char-----------1 字节------------(-128 即-(2^7) 到 127 (2^7-1)) unsigned**char—1字节------0到255 (2^8 - 1) signed char--------1 字节-----128 即-(2^7) 到 127 (2^7-1) short-----------------2 字节 ----32,768 (- 2^15) 到 32,767 (2^15 -1) signed short-------2 字节-----32,768 (- 2^15) 到 32,767 (2^15 -1) unsigned short —2 字节 ----0 到 65,535 (2^16 - 1) int/signed int-------4 字节-----( -2,147,483,648 (- 2^31) 到 2,147,483,647 (2^31 -1)) unsigned int ----- 4 字节------- 0 到 4,294,967,295 (2^32 -1) long------------------4字节-------(-2,147,483,648 (- 2^31) 到 2,147,483,647 (2^31 - 1) signed long--------4字节-------(-2,147,483,648 (- 2^31) 到 2,147,483,647 (2^31 - 1) unsigned long ----4字节--------0 到 4,294,967,295 (2^32 - 1) longlong------------8字节-------(-9223372036854775808–9223372036854775807) unsignedlong*long–8字节----0~1844674407370955161615

2、整型常量:整型常量即整型数据,可正可负,在c语言中,整型常量有二进制整数,八进制整数和十六进制整数三种形式。 扩展整型常量的表示法,常用添加后缀来实现。 3、整数的存储; 整数在计算机中以二进制补码形式存储,对于无符号数(大于0)直接以补码的形式存储;对于有符号数,最左边的数(也称为最高位)表示符号为,1表示负,0表示正。

二、字符类型 1、字符变量;字符型变量用来存放程序中使用的字符型数据。字符型变量通过char来定义,例如;char**c; 代码演示:

#include #include int main() { char a,b,c,d; unsigned char e; a=97; b='a'; c=-28; d=a+1; //字符型做算术运算 e=228; printf("a=%c\n",a); printf("a=%d\n",a); printf("a=%c\n",b); printf("a=%d\n",b); printf("a=%c\n",c); printf("a=%c\n",e); printf("a=%c\n",d); system("pause"); return 0; }

2、字符常量:

字符常量是用单引号(’’)括起来的单个字符。例如:char c1 = ‘a’; char c3 = ‘9’;C 中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’; // '\n’表示换行符在 C 中,char 的本质是一个整数,在输出时,是 ASCII 码对应的字符。可以直接给 char 赋一个整数,然后输出时,会按照对应的 ASCII 字符输出 [97]char 类型是可以进行运算的,相当于一个整数,因为它都对应有 Unicode 码. 6)转义字符--------意义------------ASCII码值(十进制) \a----------------响铃(BEL)--------------------------------------007 \b----------------退格(BS) ,将当前位置移到前一列------008 \f-----------------换页(FF),将当前位置移到下页开头----012 \n----------------换行(LF) ,将当前位置移到下一行开头–010 \r-----------------回车(CR) ,将当前位置移到本行开头----013 \t-----------------水平制表(HT) (跳到下一个TAB位置)–009 \v----------------垂直制表(VT)------------------------------------011 \\(两条斜杠)------代表一个反斜线字符’’’-------092 \’(单斜杠)----------代表一个单引号(撇号)字符---------039 \"(单斜杠)----------代表一个双引号字符--------------------034 \?(单斜杠)----------代表一个问号----------------------------063 \0----------------空字符(NUL)-------------------------------------000 \ddd----------1到3位八进制数所代表的任意字符-三位八进制 \xhh----十六进制所代表的任意字符---------十六进制 7)代码演示: #include #include void main(){ char c1='a'; char c2='b'; int num=c2+10;//结果应该是98+10=108 printf("c1=%d\n",c1);// printf("num=%d",num); system("pause"); }

3、字符在计算机中的存储

字符型 存储到 计算机中,需要将字符对应的码值(整数)找出来 存储:字符’a’—>码值 (97)—>二进制 (1100001)—>存储() 读取:二进制(1100001)—>码值(97)—> 字符’a’—>读取(显示)字符和码值的对应关系是通过字符编码表决定的(是规定好)

三、浮点型 1、基础知识 1)C 语言的浮点类型可以表示一个小数,比如 123.4 ,7.8 ,0.12 等等 2)浮点型的分类:float 单精度,4 字节,精度 6 位小数;double 双精度,8 字节,精度 15位小数 3) 关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位 , 浮点数是近视值;尾数部分可能丢失,造成精度损失。 2、使用细节 1)浮点型常量默认为 double 型 ;声明 float 型常量时,须后加‘f’或‘F’。声明long double时,要加后缀“l”或“L” 2)由于浮点数在计算时会有精度损失,浮点运算的性质和数学运算不同。所以在程序设计中,尽量避免两个相等的浮点数进行计算。 3、浮点型常量有两种表示形式; 十进制数形式:如:5.12 512.0f .512 (必须有小数点) 科学计数法形式:如:5.12e2 、 5.12E-2(e前e后都有数,并且e后为整数)

四、布尔型 1、知识点:1) C 语言标准(C89)没有定义布尔类型,所以 C 语言判断真假时以 0 为假,非 0 为真 [案例] 2) 但这种做法不直观,所以我们可以借助 C 语言的宏定义 。 3) C 语言标准(C99)提供了_Bool 型,_Bool 仍是整数类型,但与一般整型不同的是,_Bool 变量只能赋值为 0 或 1, 非 0 的值都会被存储为 1,C99 还提供了一个头文件 定义了 bool 代表_Bool,true 代表 1,false 代 表 0。只要导入 stdbool.h ,就能方便的操作布尔类型了 , 比如 bool flag = false;[了解] 2、代码演示:

#include //宏定义 #define BOOL int #define TURE 1 #define FALSE 0 void main() { int isPass = -1; //可以使用宏定义来完成(这里大家先看下,体会一下,后面我们会详解宏定义) //定义一个布尔变量 BOOL isOk = TURE; // 等价 int isOK = 0 if(isPass) { // 0 表示假, 非 0 表示真 printf("通过考试"); } if(isOk) { printf("ok"); } getchar(); }

```五、基本数据类型转换 1、自动类型转换: 1)当 C 程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转 换。 2)数据类型按精度(容量)大小排序为 在这里插入图片描述 自动类型转换细节说明:

有多种类型的数据混合运算时,系统首先自动将所有数据转换成 精度最大的那种数据类型,然后再进行计算(如 int 型和 short 型运算时,先把 short 转成 int 型后再进行运算)。若两种类型的字节数不同,转换成字节数大的类型,若两种类型的字节数相同,且一种有符号,一种无符号, 则转换成无符号类型在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边的类型将转换为左边的类型, 如果右边变量的数 据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。

2、强制类型转换

1)将 精度高的数据类型转换为 精度小的数据类型。使用时要加上符 强制转换符 ( ),但可能造成精度降低或溢出,格外要注意。 2)强制类型转换一般格式如下: ( 类型名) 表达式 : 什么是表达式: 任何有值都可以称为表达式,比如 1+ 2, int num = 2 这种强制类型转换操作并不改变操作数本身。 3)代码演示:

#include void main() { double d1 = 1.934; int num = (int)d1; //这里注意,不是进行四舍五入,而是直接截断小数后的部分 //强制转换只对最近的数有效, 如果希望针对更多的表达式转换,使用() //int num2 = (int)3.5 * 10 + 6 * 1.5; // 3 * 10 + 6 * 1.5 = 30 + 9.0 = 39.0 int num3 = (int)(3.5 * 10 + 6 * 1.5); // 35.0 + 9.0 = 44.0 -> int = 44 printf("\nnum3=%d", num3); // num3 = 44 printf("\nnum=%d d1=%f" , num, d1); // d1 仍然是 double getchar(); }

强制类型转换细节说明: 1)当进行数据的从 精度高——>精度低,就需要使用到强制转换 2) 强转符号只针对于 最近的操作数有效,往往会使用 小括号提升优先级。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有