嵌入式-格式控制符

一、基础格式控制:

%d // 十进制整数,decimalism

%o // 八进制整数,octonary

%x // 十六进制整数,hexadecimal

%c // 字符,character

%s // 字符串,character string

%f // 单精度浮点数,float

%p // 输出地址、输出指针的值,pointer

二、基本转义字符

\n - 换行符。将光标移动到下一行的开始位置。******

\t - 水平制表符。通常会将光标移动到下一个制表位。

\a - 警报声。发出警报声。

\b - 退格。将光标向后移动一个字符的位置。

\f - 换页。跳转到下一页的开始位置。

\r - 回车。将光标移动到当前行的开始位置,但不换行。

\v - 垂直制表符。通常会将光标移动到下方的垂直制表位。

三、高级int类型格式控制符

%d int 整型

%hd short 整型,

h代表half,即一半的存储字节

%ld long 整型

%lld long long 整型

%u 无符号整型

%hu 无符号short整型

%lu 无符号long 整型

%llu 无符号long long 整型

代码示例:

#include <stdio.h>
int main(int argc, char const *argv[])
{
    // 1、整型(signed int, unsigned int)(integer)
    int num1 = 100;         // signed int 有符号
    printf("int num1 value == %d\n", num1);
    printf("int num1 size  == %lu\n", sizeof(num1)); // sizeof可以计算数据返回的数据类型的大小(sizeof返回的类型是long unsigned int数据类型的)

    unsigned int num2 = 200;
    printf("unsigned int num2 value == %u\n", num2);
    printf("unsigned int num2 size  == %lu\n", sizeof(num2)); 

    // 2、短整型(short int, unsigned short int)
    printf("\n");
    short num3 = 300;
    printf("short int num3 value == %hd\n", num3);
    printf("short int num3 size  == %lu\n", sizeof(num3)); 


    unsigned short num4 = 400;
    printf("unsigned short int num4 value == %hu\n", num4);
    printf("unsigned short int num4 size  == %lu\n", sizeof(num4)); 

    // 3、长整型(long int, unsigned long int)               // 注意:long在32位系统下:4个字节, 64位系统下:8个字节
    printf("\n"); 
    long num5 = 500;
    printf("long int num5 value == %ld\n", num5);
    printf("long int num5 size  == %lu\n", sizeof(num5)); 

    unsigned long num6 = 600;
    printf("unsigned long int num6 value == %lu\n", num6);
    printf("unsigned long int num6 size  == %lu\n", sizeof(num6)); 

    // 4、长长整型(long long int, unsigned long long int)   // 注意:long long在32位系统、64位系统下:都是8个字节
    printf("\n"); 
    long  long num7 = 700;
    printf("long long int num7 value == %lld\n", num7);
    printf("long long int num7 size  == %lu\n", sizeof(num7)); 

    unsigned long long num8 = 800;
    printf("unsigned long long int num8 value == %llu\n", num8);
    printf("unsigned long long int num8 size  == %lu\n", sizeof(num8)); 


}

四、float

%f // 单精度浮点型

%lf // 双精度浮点型

%Lf // 长双精度浮点型

%6.1f // 右对齐并占用宽度为6,保留一位的小数的浮点数

%e,%E 转换浮点数为十进制指数记法。 // 比较少用 1234 == 1.234*10的3次方

%a,%A 转换浮点数为十六进制记法。 // 基本不用

%g,%G 转换浮点数为十进制小数或十进制指数记法,依赖于值和精度。 // 基本不用

代码示例:

#include <stdio.h>
int main(int argc, char const *argv[])
{
    // 1、单精度浮点型
    float f1 = 3.14;
    printf("f1 = %f\n", f1);       
    printf("f1 = %10.1f\n", f1);   // 正数10表示右对齐(即一共打印10个数据,数据靠右, 左对齐默认(或加个-(负数)))
                                   // .1表示打印的数据只保留1位小数
    printf("f1(size) == %lu\n", sizeof(f1));   

    // 2、双精度浮点型
    printf("\n");
    double f2 = 114.114;
    printf("f2 = %lf\n", f2);       
    printf("f2 = %-10.1lf\n", f2);   
    printf("f2(size) == %lu\n", sizeof(f2));       

    // 3、长双精度浮点型(32位系统:12个字节, 64位系统:16个字节)
    printf("\n");
    long double f3 = 6.18;
    printf("f3 = %Lf\n", f3);       
    printf("f3 = %-10.1Lf\n", f3);   
    printf("f3(size) == %lu\n", sizeof(f3));      

    // 笔试题
    if (f1 == 3.14)                 // 小数常量,默认是以64位(8个字节)内存来存放的 (float型的精度是32位(4个字节), 小数常量的精度是64位(8个字节),不够数据比较,所以不等)
    {
        printf("f1 等于 3.14\n");       
    }
    else
    {
        printf("f1 不等于 3.14\n");
    }


    if (f2 == 114.114)              //  double型的精度是64位(8个字节), 小数常量的精度是64位(8个字节),数据刚好够比较,所以相等
    {
        printf("f2 等于 114.114\n");       
    }
    else
    {
        printf("f2 不等于 114.114\n");
    }

    if (f3  ==  6.18)                //  long double型的精度是16个字节, 小数常量的精度是64位(8个字节),数据足够比较,所以相等
    {
        printf("f3 等于 6.18\n");       
    }
    else
    {
        printf("f3 不等于 6.18\n");
    }

    return 0;
}

五、字符型(char ) 一字节的int型

%c // 单个字符型

%o // 八进制

%x // 十六进制

%#o // 输出带有0前缀的的八进制数 012

%#x, // 输出带有0x前缀的十六进制数 0x12

代码示例:

#include <stdio.h>
int main(int argc, char const *argv[])
{
    // 1、打印字符(字符 == 单字节的整型数)
    char ch1 = 'a';     // 单引号表示字符
    char ch2 = 105;     // 可以直接给字符类型赋整型数(因为字符类型本质上就是一个整型数(单字节))
    int  ch3 = 106;

    printf("ch1 == %d\n", ch1); // 将这个字符变量ch1,以十进制数形式输出
    printf("ch2 == %c\n", ch2); // 以字符形式,打印这个ch2变量的值
    printf("ch3 == %c\n", ch3); // 以字符形式,打印这个ch3变量的值

    // 2、字符打印格式(其它格式)
    char ch4 = 88;
    printf("ch4(字符)      == %c\n", ch4);   // 打印字符
    printf("ch4(十进制)    == %d\n", ch4);   // 打印十进制数据
    printf("ch4(八进制)    == %o\n", ch4);   // 打印八进制数据
    printf("ch4(十六进制)  == %x\n", ch4);   // 打印十六进制数据

    printf("ch4(八进制)    == %#o\n", ch4);   // 打印八进制数据   
    printf("ch4(十六进制)  == %#x\n", ch4);   // 打印十六进制数据(0123456789abcdef,小写)

    int num  = 110110;
    printf("ch4(十六进制)  == %#X\n", num);   // 打印十六进制数据(0123456789ABCDEF,大写)

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值