第三章 数据和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标准添加的关键字

表3.1 C语言的数据类型关键字
最初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类型的值必须是整数,可以是正整数、负整数、零,其取值范围依计算机而异。

  1. 声明int变量:

    int erns;
    int hogs, cows, goats;
    
    cows = 12;
    
  2. 初始化变量

初始化变量就是为变量赋一个初始值:

int hogs =21;
int cows =32; goats =14;
  1. int类型常量

C语言把大多数整形常量视为int类型,但是非常大的整数除外

  1. 打印int值:

    printf("%d",num)
    
  2. 八进制和十六进制

0x或0X开头为十六进制,0开头为八进制

  1. 显示八进制和十六进制

十进制使用%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.5 使用数据类型

在使用变量之前必须先声明,并选择有意义的变量名。初始化变量应使用与变量类型匹配的常数类型。

3.6 参数和陷阱

注意双引号和单引号区别

3.7 转义序列示例

转义概念在计算机使用电传打字机作为输出设备试就有了,但是他们不一定能与现代图形接口兼容。

3.8关键概念

计算机在内存中用数值编码来表示字符。

3.9 本章小结

C有多重数据类型,基本数据类型分为两大类,整数类型和浮点数类型。

浮点类型有3种 long 、double 、long double

整数可以表示为十进制、八进制、十六进制

如果对您有用,请我喝杯咖啡吧。

赞助扫码::
../../../_images/apay.jpg ../../../_images/pay_wechat.png