C强大而灵活的数据

强大而灵活的数据

  1. 变量:数据在程序运行过程中可能变化或被赋值;常量:数据可以在程序使用之前预先设定并在整个运行过程中没有变化。
  2. 定义变量的常用格式:数据类型 变量名;
  3. 定义多个类型相同的变量格式:数据类型 变量名, 变量名, 变量名…;
  4. C数据透视图
    这里写图片描述

  5. printf() 的属性,格式说明符的数目和要显示的值的数目一定要相同;每个要显示的值都必须对应自己的格式说明符,并且显示值的类型要同说明符相匹配。printf() 说明符决定数据的显示方式而不决定数据的存储方式。

/*print1.c 说明 print() 的一些属性*/
#include <stdio.h>
int main(void)
{
    int ten = 10;
    int two = 2;
    printf("Doing it right: ");
    printf("%d minus %d is %d\n", ten, 2, ten-two );
    printf("Doing it wrong: ");

    //忘掉了两个参数
    printf("%d minus %d is %d\n", ten );
    return 0;
}
  • char 类型声明与其它类型变量的声明方式相同,此类型用于存储字母和标点符号之类的字符,实际上 char 是整数类型。
    转义序列
/*charcode.c 显示一个字符的编码值*/
#include <stdio.h>
int main(void)
{
    char ch, beep;
    beep = '\a';    
    /*
    如果编译器不识别警报字符(\a),则可以使用ASCII码替代
    beep = '\007'; 
    */
    printf("Please enter a character.\n");
    scanf("%c", &ch);  /*获取用户输入*/
    printf("The code for %c is %d.\n", ch, ch );
    printf("%c", beep);
    return 0;
}
  • 何为可移植类型?
    通过对已有类型进行一些别名的扩展,以达到确切的描述相关信息。在使用这些可移植类型(它们不是关键字& int 不一样的哦)时,需要引用头文件 inttypes.h ,inttypes.h 头文件定义了一些可用在 scanf() 和 printf() 中读写这些类型整数的宏。
    此类型使用 typedef 进行定义:
    typedef int int32_t;
    使用 #define 指令定义格式说明符:
    #define PRId32 “d” //输出说明符。
    #define SCNd32 “d” //输入说明符。

    1.确切长度类型,有符号类型使用 intN_t 格式、无符号类型使用 uintN_t 格式;格式宏使用 【d】 或 【i】 表示有符号类型,无符号类型使用 【o、x、X】说明符代替“%u”。
    确切长度类型
    2.最小长度类型,可以保证一种类型的大小至少为某个确定的位。
    最小长度类型
    3.最快最小长度类型,对于特定系统,有些整数表示可能比其它表示更快,inttypes.h定义了表示至少某个位数的最快类型。
    最快最小长度类型
    4.最大长度类型,有时需要使用可用的最大整数类型,系统也可能提供比 longlong 或 unsigned longlong 更长的整数类型。
    最大长度类型
    5.可以保存指针值的整数,inttypes.h 头文件通过包含 stdint.h 头文件定义了以下两种整数类型,可以精确地保存指针值。
    可以保存指针值的整数

/*altnames.c 可移植的整数类型名*/
#include <stdio.h>
#include <inttypes.h>   //支持可移植类型

int main(void)
{
    int16_t me16;   //me16是一个16位有符号变量
    me16 = 4593;

    printf("First, assume int16_t is short:\n");
    printf("me16 = %hd\n", me16);
    printf("Next, let's not make any assumptions.\n");
    printf("Instead, use a \"macro\" from inttypes.h:");
    printf("me16 = %" PRId16 , me16);
    /*参数 PRId16被它在 inttypes.h 中的定义“hd” 所替代*/
    return 0;
}
  • 浮点型
    C语言中包括浮点数:float 、 double 、long double。
    浮点型计数方式
    浮点型变量的声明及初始方法同整型变量相同,在C中浮点型默认为double,可以通过【f && F】后缀把浮点常量当作 float 类型,也可以通过【l && L】后缀把浮点常量当中 long double 类型。使用 printf() 打印输出时可用说明符【%f 、%e、%a】。
/*showf_pt.c 以三种方式显示浮点值*/

#include <stdio.h>
int main(void)
{
    float aboat = 32000.0;
    double abet = 2.14e9;
    long double dip = 5.32e-5;
    printf("%f can be written %e\n", aboat, aboat );
    /*使用%e打印指数记数法的数字*/
    printf("%f can be written %e\n", abet, abet );
    printf("%f can be written %e\n", dip, dip );
    printf("%a %a %a\n", aboat, abet, dip );
    /*使用%a打印十六进制格式浮点数*/
    return 0;
}
  • sizeof 是求指定数据类型在内存中的大小,单位 “Byte”。
/*typesize.c 输出类型的大小*/

#include <stdio.h>
int main(void)
{
    /*c99 为类型提供一个 %zd 说明符*/

    printf("type int has a size of %u bytes.\n",
             sizeof(int) );
    printf("type char has a size of %u bytes.\n",
             sizeof(char) );
    printf("type long has a size of %u bytes.\n",
            sizeof(long) );
    printf("type double has a size of %u bytes.\n",
            sizeof(double) );
    printf("type _Complex has a size of %zd bytes.\n",
            sizeof(_Complex) );
    /*使用 c99 提供的 %zd 说明符*/
    printf("type unsigned int has a size of %lu bytes.\n",
            sizeof(unsigned int) );
    /*
    /sublime_text 编译器允许使用 %lu 代替 %u,因为C允许
    由具体的实现来选择 sizeof 返回的结果值实际使用哪种
    无符号整数类型。
    */

    return 0;
}

sizeof内置运算符
上图的编译结果第5行“type _Complex has a size of zd bytes.”,说明本机是不支持c99标准的,至于复数(_Complex)在相应环境中占多少自然字,你可以自己去测试哦!_Complex占16字节在PC机上win10环境中

  • printf() 刷新输出的可能性:
    1.缓冲区满的时候
    2.遇到换行符的时候
    3.需要输入的时候
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值