数据类型知识点、重点

目录

一、类型

1.简单类型

2.复合类型(右为举例)

3.自定义类型

二、字面值常量

1.整型字面常量

2.浮点型字面值常量

3.字符和字符串的字面常量

附:转义字符

例题:求字符串长度和大小

三、定义变量

1.常见数据类型以及大小

2.数据类型以及格式控制符

例题:求表达式的值

 3.整型提升

例题:整型提升


一、类型

类是一种类型,是对象的模板,而不是变量或对象。它内部本身不包含对象。只是声明了这种对象的存在。只有创建对象的时候,才会真正的创建对象内部的对象。

1.简单类型

        整型 int、short、long、longlong、bool、char、size_t

        浮点型 float、double、long double

size_t是标准C库中定义的,在64位系统中为long long unsigned int,非64位系统中为long unsigned int。使用size_t可能会提高代码的可移植性、有效性或者可读性,或许同时提高这三者。因为其是基于平台变化的最大支持的无符号整型。

2.复合类型(右为举例)

        引用&a

        指针*pointer

        数组 i[]

        字符串"Hello world"

3.自定义类型

        类class

        结构体struct

        枚举enum

        联合体union

二、字面值常量

常量主要包括字面值常量和自定义常量。

1.整型字面常量

不同进制指的是字面格式,其转化为存储格式时,都会变成二进制存储。不必担心十进制与二进制之间的运算。字面常量只是一种数字的表示方法。24,024(八进制),0x24(十进制)。会自动选用尺寸最小的整型进行存储;负号是对字面值取相反数,不是字面值的一部分。

85         // 十进制
0213       // 八进制 
0x4b       // 十六进制 
30         // 整数 
30u        // 无符号整数 
30l        // 长整数 
30ul       // 无符号长整数

2.浮点型字面值常量

        默认情况下使用 double 存储。3.14,3.14E0,10e4

3.14159       // 合法的 
314159E-5L    // 合法的 
510E          // 非法的:不完整的指数
210f          // 非法的:没有小数或指数
.e55          // 非法的:缺少整数或分数

3.字符和字符串的字面常量

  • 字符'a':单引号下一个字符,为一个字节
  • 字符串"aa":双引号下,会多一个'\0'终止标志,字节数=字符数+1,长度(strlen)就是字符数

附:转义字符

  1. C语言中,一个ASCII字符用单引号括起来,表示单字符常量,如:'a', 'A','0','9'等

  2. C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等

 

 

例题:求字符串长度大小

1.字符串"\t\\x43\102\bcd"的长度是_____,大小是____?

2.字符串"478\345\\345\t\128\x15"的长度是______,大小是_____?

 

 

 3."\72"在内存中占____个字节?

 

4.表达式'a'+10+'\101'+010+0x10的值是______。


 

三、定义变量

将数据类型分为int、char、float等是为了更好的控制数据精度以及高效利用空间

1.常见数据类型以及大小

 

2.数据类型以及格式控制符

例题:求表达式的值

1.   表达式的值为_______。

    int i = 1;
    int j = 2;
    int k = i / j;
    printf("k=%d", k);

2.  表达式的值为_______。

    int i = 1;
    int j = 2;
    double k = i / j;
    printf("k=%d", k);

 3.  表达式的值为_______。

    double i = 1;
    double j = 2;
    double k = i / j;
    printf("k=%d", k);

 4.  表达式的值为_______。

    int i = 1;
    int j = 2;
    double k = i / j;
    printf("k=%f", k);

 5.  表达式的值为_______。

    int i = 1;
    double j = 2;
    double k = i / j;
    printf("k=%f", k);

 

 3.整型提升

表达式中各种长度可能小于int长的的整型值,都必须先转换为int或者unsigned int,然后才能送入CPU去执行运算。(涉及到原码、反码、补码的知识)

例题:整型提升

1.输出____。

    char a = 250;
    printf("%d", a);

 2.输出_____。

int main()
{
    char a = 0xb6; 
    short b = 0xb600;
    int c = 0xb6000000;
    if (a == 0xb6)
        printf("a");
    if (b == 0xb600)
        printf("b");
    if (c == 0xb6000000)
        printf("c");
    return 0;
}

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值