3.常量与变量

本文详细介绍了C语言中的基本数据类型(如整型、字符型、浮点型)、常量(直接常量、符号常量)以及变量的定义、内存中的存储形式和整型溢出、浮点型的舍入误差等内容,帮助读者理解C语言中关键概念。
摘要由CSDN通过智能技术生成

1.c 的数据类型

分类:

 基本类型:(其值不可再分)

  • 整型
  • 字符型
  • 浮点型:单精度浮点型和双精度浮点型
  • 枚举型

 构造类型:(可分成多个“成员”每个成员都是一基本数据类型或又是一个构造类型)

  • 结构体类型
  • 共用体类型
  • 数组类型

 指针类型

 空类型

2.常量与变量

1)常量:

—直接常量:

  • 整型常量:12、0
  • 字符型常量:4.6、-1.3
  • 字符常量:‘a’、‘b’、‘3’

—符号常量

        用标识符表示常量

        形式:#define 标识符 常量  如:#define PI 3.1415926

        —符号常量在使用前必须先定义

        —习惯上,约定符号常量名大写,变量名用小写

2)变量:

变量:代表内存中具有特点属性的一个存储单元,用来存储数据

  • 变量必须先定义后使用

标识符对变量、符号常量、函数、数组等数据对象命名的有效符号序列

标识符命名规则:c语言规定标识符只能对字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线(一定不要用 c 语言的关键字)

3.整型数据

<1> 整型常量表示方法:

1)十进制:如123、0、4

2)八进制,以“0”<零>开头。如:0123

3)十六进制:以“0x”开头。如:0x123

<2> 整型变量:
1)内存中的存放形式(补码)

以二进制形式存放

在内存中,数值是以补码的形式表示的。

正数的补码、反码和其原码形式相同

负数的补码:将该负数的绝对值的二进制,按位取反再加1.

如:-10的补码

-10的绝对值的原码:        00000000  00001010    原码

取反:                               11111111    11110101     反码

再加1,得-10的补码:      11111111    11110110     补码

注:在其存储单元中,最左边的一位是符号位。0:正数      1:负数

  1的原码:          00000000 00000000

-1的补码:           11111111 11111111

32767的原码:    01111111 11111111

-32767的补码:   10000000 00000001

-32768的补码:   10000000 00000000

2)整型变量的风类
类型说明符数的范围字节数
基本型int(16位)-32768~327672
无符号基本型unsigned [int]0~65535(2的16次方减1)2
短整型short -32768~327672
无符号短整型unsigned short [int]0~655352
长整形long(32位)-2的31次方~~2的31次方减14
无符号长整形unsigned long [int]0~~2的32次方减14
3)整型变量的定义

形式:类型说明符  变量名标识符,变量名标识符,......;

注意:允许在一个类型说明符后加多个变量名,但各个变量名之间必须加逗号间隔。以“  ;”结尾

4)整型变量的溢出
/*整形变量的溢出*/
void main()
{
    int a,b;
    a=32767;
    b=a=1;
    printf("%d%d",a,b);
}
/*计算过程:

       a的值:      01111111 11111111              32767的补码
                  x                 1
                  --------------------
        b的值:     10000000 00000000              -32768的补码

*/

4.浮点型数据

<1> 浮点型的常量

1)十进制小数形式

   数字+小数点(必须有小数点)            如:123. 、 123.0、.123、0.0

2) 指数形式:数字+e+整数(e+整数,整数为10的指数)    如:123e3=123*10³

                        注:字母e之前必须有数字,e之后必须是整数

<2> 浮点型的变量
1)内存中的存放形式

一般占4个字节,内存中按指数形式储存。一般编译系统用24位表示小数部分(包括符号),8位表示指数部分。

  ANSI编码中,中文字符占2字节         1字节(B)=8bit(位)

2)浮点型变量的分类

单精度(float)                         32位       4字节

双精度(double)                     64位       8字节

长双精度型(long double)     128位      16字节

3)浮点型数据的舍入误差                             

搞不懂 >.<   

/*
由于实型变量是用有限的存储空间存储的,因此能提供的有效数字总是有限的,在有效位以外的数字将被舍去,因此会产生误差。
*/
void main()
{
    float a,b;
    a=123456.789e5;
    b=a+20;
    printf("%f\n,%f\n",a,b);
}
/*
理论结果:

        a=123456.78900
        b=123456.78920
实际运行结果:
        a=12345678848.000000
        b=12345678848.000000

原因:float只能保证的有效数字是7位,7位以后的数字无意义
*/



/*
将float型换为double型,输出结果和理论结果相同
因为double型有效位为16位
*/

注意:应该避免将一个很大的数和一个很小的数直接相加或相减,否则就会"丢失"小的数。

5.字符型数据

<1> 字符常量(占1字节)
1)用单引号包含的一个字符是字符常量   

                 如:'a'、'A'、'#'、'4'、' '

2)说明:

                'a'和'A'是不同的字符常量

                字符常量只能用单引号括起来

                字符常量只能是单个字符

3)ASCII码
控制字符ASCII码控制字符ASCII码
'0'48'1'49
'A'65'a'

97

4)转义字符:以“ \ ”开头的特殊字符

        \n     换行                                                             ASCII码:10

        \t      水平制表(8位为一个tab位置)                  ASCII码:9

        \b     退格,将当前位置移到前一列                     ASCII码:8

        \r      回车,将当前位置移到本行开头                 ASCII码:13

        \f      换页,将当前位置移到下页开头                 ASCII码:12

        \\      反斜杠字符                                                 ASCII码:92

        \‘      单撇号字符                                                 ASCII码:39

        \“     双撇号字符                                                  ASCII码:34

注意:除了‘\r’外,其余转义字符的跳格会取代原来屏幕上该位置显示的字符

<2> 字符变量

        用来存放字符常量,但只能存放一个字符

        形式:char 字符型变量 ,字符型变量,......;

<3> 字符数据在内存中的存储形式及其使用方法

1)将一个字符放到一个字符变量中,在内存单元中,是将该字符的相应的ASCII代码放人存储单元中。

如'a'的ASCII代码为97

    97      ——>       01100001

示意图                  实际存储图

效果:字符数据以ASCII码存储,与整数的存储形式类似

           一个字符数据既可以以字符形式输出,也可以以整数形式输出

void main()
{
    char c1,c2;
    c1=97,c2='a';
    print("%c %c\n",c1,c2);
    print("%d %d",c1,c2);
}
/*
输出结果:
        a a
        97 97
*/
<4> 字符串常量

定义:字符串是一对双引号括起来的字符序列         如:"chengdian252"、"CSDN"

C 规定:在每一个字符串的结尾加一个“字符串结束标志”——“\0”,以便判断字符串是否结束

        在内存中:字符串+\0

        书写时:不必加“\0”,系统默认加了

注意:字符串所占的内存空间为字节数加1.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值