C语言自学系列笔记 _ 基本数据类型

C语言中数据类型大致可分为两类:基础数据类型和复杂数据类型。

基础数据类型,总的来说分为两种:整型和浮点型。

1. 整型数据

顾名思义,整型数据就是指没有小数的数字。如122,-33等。他们都没有小数。

整型数据的类型关键字为int。根据计算机硬件及操作系统的不同,int类型的在内存中占用的空间大小不同。对于现代计算机而言,int类型通常占用4字节,即32位。可以使用sizeof运算符得到当前系统环境下int类型占用的内存数。
    unsigned long size = sizeof(int);
    printf("int 类型占用 %lu 个字节\n”,size);
程序输出:int类型占用 4 个字节。

但仅有一中长度的整型数据,显然不能满足左右程序的要求,有些程序需要很短的整型,有些程序又需要很长的数据类型,因此就衍生出了整型限定符。


1.1 短整型:short

在某些程序中,只需要很小的整数,因此用4个字节来存储就有点浪费内存了。因此C语言给出了short关键字,用来表示一个短整型数据。如下所示:
    short int an = 12;
为了书写方便,通常省略int,而简写成:
    short an = 12;
C语言并没有规定短整型在内存中占用多大的空间,而只规定了short占用的内存空间不能多于int类型。

 

1.2 长整型:long

有些程序需要比较大的整型数据,而int类型不够用,因此C语言给出了long关键字,用来表示一个长整型数据。如下所示:
    long int bn = 222433;
为了书写方便,通常省略int,而简写成:
    long bn = 222433;
C语言也没有规定long类型在内存中占用多大的空间,而只规定了long占用的内存空间不能少于int。

 

1.3 长长整型:long long

在C11标准中,提出了更长的整型类型,long long int(通常简写成long long ),它在内存中占用的空间通常比long类型多。因此能表示更大范围的整型数据。

 

1.4 有/无符号限定符:signed和unsigned

整型数据都是有符号的,其数值可以是正数,也可以是负数。有符号整型,其完整定义如下所示:
    signed int  si= 12;
    signed short ss = 12;
    signed long sl = 12;
C语言中,整型数据默认的都是有符号的。因此,对于一个有符号的整型数据,通常不写signed,而只用关键字。如下所示:
    int si = -19;
    short ss = -19;
    long sl = -19;

有些变量永远不可能为负数,因此就可以使用unsigned的关键字,表明变量为无符号的整数。如下所示:
    unsigned int  uiwrong= -12; (编译器报错:usigned int类型的数值不能为负数)
    unsigned int ulright= 334;(编译通过)

有符号和无符号的整数,其在内存中占的空间大小相同,但有符号的整型,其二进制的最高位表示符号,剩下的位数才表示数值,而无符号的整型,其全部位都用来表示数值。

 

2. 字符型数据:char

C语言中所有字符均使用ASCII码,而ASCII码实际上是将字符映射为一个整数。因此字符型数据,实际上也是整型。
字符型数据在内存中占用1个字节,字面量用一对单引号给出,或直接给出ASCII码,如下所示:
    char c = ‘a’;
    char d = 97;(97为字符a的ASCII码)。
但是需要注意一点,char类型没有符号,因此不能使用unsigned关键字修饰。

 

3. 布尔型数据

C语言并没有单独的布尔型数据,当值为0时,则表示“假”,值不为0时则表示“真”。

 

4. 浮点型数据

C语言提供了三种浮点型数据。需要注意的是,浮点型数据只是近似值,而不是准确的值。

 

4.1 单精度浮点型:float

float类型在内存中占用4字节,它只能表示6位有效数字,第7位数字准确度无法保证。定义浮点数据,其字面量后面应写上f,如下所示:
    float f_value = 3.23f;

 

4.2 双精度浮点型:double

double类型在内存中占用8字节,它能表示15位的有效数字。其定义如下:
    double d_value= 2.394;

 

5. 类型转换符

在C语言看来,一切数据都为都是数字,其本质就是二进制的0和1。当需要输出某个数据时,就需要将二进制数以指定的格式输出。例如数字65,其二进制数位0100 1010。如果以十进制输出,则输出为65;如果以字符输出,则输出为字母A。因此,在C语言中,输出数据时,必须使用正确的类型转换符。

5.1 整型

    int an = 65;
    printf(“%d”,an);    //%d为int类型的输出类型转换符。


5.2 短整型

    short bn = 65;
    printf(“%hd”,bn);    //%hd为short类型的输出类型转换符;


5.3 长整型

    long cn = 65;
    printf(“%ld”,cn);    //%ld为long类型的输出转换符;

 

5.4 长长整型

    long long dn = 65;
    printf(“%lld”,dn);    //%lld为long类型的输出转换符;


5.5 无符号

    unsigned int an = 13;
    printf(“%u",an);    //%u为unsigned int类型的输出转换符;
    
    unsigned short bn = 12;
    printf(“%hu\n",bn);    //%hu为unsigned short类型的输出转换符;

    unsigned long cn = 23;
    printf(“%lu\n",cn);    //%lu为unsigned long类型的输出转换符;

    unsigned long long dn = 65;
    printf("%llu",dn);    //%llu为unsigned long long类型的输出转换符;

 

5.6 字符型

    char en = ‘a’;
    printf(“%c”,en);    //%c为char类型的输出转换符;

 

5.7 十六进制输出:

    int an = 93;
    printf(“%x”,an);    //%x表示以十六进制输出整型数据。
    printf(“%#x”,an);    //%#x表示以十六进制输出整型数据,并输出十六进制的前缀0x;

 

5.8 八进制输出:

    int an = 93;
    printf(“%o”,an);    //%o表示以八进制输出整型数据;
    printf(“%#o”,an);    //%#o表示以八进制输出整型数据,并输出八进制的前缀0;

 

5.9 浮点数输出:

    float an = 93.42;
    double bn = 6.564;
    printf(“%f”,an);    //%f表示输出浮点数;    
    Printf(“%f”,bn);


5.10 %+数字+转换符

    这种形式的转换符,数字表示最小字段宽度及小数位。

  • 对于整型数据:

    int an= 94;
    printf(“%6d”,an);    //数字6表示,an的数值在屏幕上占用宽度最少为6个字符的宽度;如果容纳不下,则系统会自动加宽空间。
    printf(”%6.5d“,an);    //数字6表示an的值在屏幕上最少占用的宽度,.5表示an的值最小位数;an的值只有两位,因此,系统会在an的值前面补0,使其占到5位;

  • 对于浮点数:

    float an = 3.1415926;
    printf(“%10f”,an);    //数字10表示an值在屏幕上占用的最小宽度;
    printf(“%10.2f”,an);    //.2表示打印小数点后2位(会执行四舍五入);

 

5.11 字符串

C语言没有字符串的概念,字符串实际就是一个字符数组,它也可以在printf()函数中一次性输出;

     char stringValue[] = "this is raymond's blog.";

     printf("%s\n",stringValue);    //%s将字符数组以字符串的形式输出;

  • 1
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

raynadofan

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值