第三章 数据和C¶
本章介绍以下内容:
关键字:int、short、long、unsigned、char、float、double、_Bool、_Comple、_Imaginary
运算符:sizeof()
函数:scanf()
整数类型和浮点数类型的区别
如何书写整形和浮点型常数,如何声明这些类型的变量
如何使用printf()和scanf()函数读写不同类型的值
3.1示例程序¶
//filename: platinum.c #include <stdio.h> int main(void){ float weight; float value; printf("weight\n"); //用户给输入 scanf("%f",&weight); value = 1700.00 * weight ; printf("weight: %.2f",value); getchar() return 0; }
注意这里双引号和单引号的却别,博主在敲代码就搞成了单引号报错了。
还有注意一下里面的符号&
3.1.1 程序中的新元素:
■ 注意,代码中使用了新的变量声明, 本利使用了浮点型类型float 的变量
■ 为了打印新类型的变量, 在printf()中使用%f来处处理浮点值, %.2f中的.2用于控制小数点后两位
■ scanf()函数用于读取键盘的输入
%f要读取用户输入的浮点数
&weight告诉scanf()把输入的值赋给weight变量,
&符号表明找到weight变量的地点。
3.2 变量与常量数据¶
weight就是一个变量
weight*1700 其中1700就是常量
3.3 数据:数据类型关键字
不仅变量和常量不同,不同的数据类型之间也有差异。一些数据类型表示数字,一些数据类型表示字母。
C通过识别一些基本的数据类型来区分和使用这些不同的数据类型
最初K&R给出的关键字 C90标准添加的关键字 C99标准添加的关键字
最初K&R给出的关键字 | C90标准添加的关键字 | C99标准添加的关键字 |
---|---|---|
int | signed | _Bool |
long | void | _Complex |
short | _Imaginary | |
unsigned | ||
char | ||
float | ||
double |
在C语言中,用int关键字来表示基本的整型类型。后3个关键字(long、short、unsigned)和C90新增的signed用于提供基本整数类型的变式。_Bool表示布尔值true和false,_Complex和_Imaginary表示复数和虚数。
3.3.1 整数和浮点数
对我们而言,整数和浮点数的区别是他们的书写方式不同。对计算机而言,他们的区别是存储的方式不同。
3.3.2 整数
整数是没有小数部分的数。
3.3.3 浮点数
2.75、3.16E7、7.00、2e-8都是浮点数,显然浮点数有多种形式, 3.16E7 = 3.16*10的7次方
1.整数没有小数部分,浮点数有小数部分 2.浮点数可以表示的范围比整数大 3.对于一些算术运算,浮点数损失的精度更多。 4.任何区间内都存在无穷多个实数,所以浮点数通常指是实际值的近似值。 5.过去,浮点运算比整数运算慢,现在许多CPU都包含浮点处理器,缩小了速度上的差距
3.4 C语言基本数据类型¶
本节将介绍C语言的基本数据类型,包括声明变量、如何表示字面值常量以及典型的用法。一些老式的C语言编译器无法支持这里提到的所有类型,请注意。
3.4.1 int类型
int类型是有符号整形,即int类型的值必须是整数,可以是正整数、负整数、零,其取值范围依计算机而异。
声明int变量:
int erns; int hogs, cows, goats; cows = 12;
初始化变量
初始化变量就是为变量赋一个初始值:
int hogs =21;
int cows =32; goats =14;
- int类型常量
C语言把大多数整形常量视为int类型,但是非常大的整数除外
打印int值:
printf("%d",num)
八进制和十六进制
0x或0X开头为十六进制,0开头为八进制
- 显示八进制和十六进制
十进制使用%d, 八进制使用%o, 十六进制使用 %x:
int x = 100;
printf("dec = %d; octal=%o; hex= %x;")
printf("dec = %d; octal=%#o; hex= %#x;")
>>dec=100;octal=144;hex=64;
>>dec=100;octal=0144;hex=0x64;
注意,如果要在八进制和十六进制值前显示0和0x前缀,要分别在转换说明前加入#
3.4.2 其他整数类型
C语言提供了3个附属关键字修饰基本整数类型:short、long、unsigned:
*short占用空间比int少
*long占用空间比int多
*long long 占用比long 多,适用更大的数值场景
*unsigned 只用于非负值场景
*在任何有符号类型前面添加关键字signed,可强调使用有符号类型的意图
1.声明其他整数类型:
long int estine;
long johns;
short int erns;
short ribs;
unsigned int s_count;
unsigned play;
unsigned long head;
unsigned short yesvotes;
long long ago;
2.使用多种整数类型的原因
。。还是继续使用int吧 方便
3.long常量和long long常量
在支持long long类型的系统中,也可以使用ll或LL后缀来表示,如3LL ,另外u或U表示 unsigned long long 如5ull、10LLU、6LLU
4.打印long、short long long和unsigned类型:
%u:unsigned
%hd:short
%hd:long
%lld:long long
3.4.3 使用字符char类型
C语言把1字节定义为char类型占用的位(bit)数
1.声明:
char latan;2.初始化:
latan ='A'; //正确 latan =A; //错误 latan =“A”; //错误注意只能是单引号
3.非打印字符
单引号只适用于字符、数字和标点符号,浏览ASCII表会发现,有些字符打印不出来,C语言提供了3种表示这些字符:
1.使用ASCII码: char deep = 7; 2.使用特殊的符号序列表示一些特殊字符。 3.?书上没看到4.打印字符:
%c 指明待打印的字符5.有符号还是无符号
有些编译器把char实现为有符号类型,意味着范围是-128~127,有的实现为无符号类型范围是0~255,可查阅对应的编译手册,确定如何实现char类型。
根据C90标准 C语言允许在关键字char前面使用signed或unsigned,这样无论编译器默认的char是什么类型,signed char表示有符号类型,unsigned char表示无符号类型。
3.4.4 _Bool类型
用于表示布尔值,true和false 占用1位存储空间
3.4.5 可移植类型: stdint.h和inttypes.h
C语言提供了许多有用的整数类型,但是 某些类型名在不同系统中的功能不一样,C99新增了两个头文件stdint.h和inttype.h,以确保C语言的类型在各系统中功能相同。
int32_t me32; //me32Shi一个32位有符号整型变量这里需要注意一下不同的头文件对应不同的类型变量类型。
3.4.6 float、double和long double
浮点型 双精度浮点型 long double 精度最高。
3.4.7 复数和虚数类型
许多科学和工程计算都要用到复数和虚数。
3.4.8其他类型
C语言还有一些从基本类型衍生的其他类型,包括数组、指针、结构、和联合。前面接触的&符号就是指针的创建
3.4.9 类型大小
sizeof是C语言的内置运算符,以字节为单位给出指定类型的大小。
使用%zd做转换 不支持C99和C11可使用%u、%lu代替
3.7 转义序列示例¶
转义概念在计算机使用电传打字机作为输出设备试就有了,但是他们不一定能与现代图形接口兼容。
3.8关键概念¶
计算机在内存中用数值编码来表示字符。
3.9 本章小结¶
C有多重数据类型,基本数据类型分为两大类,整数类型和浮点数类型。
浮点类型有3种 long 、double 、long double
整数可以表示为十进制、八进制、十六进制
如果对您有用,请我喝杯咖啡吧。