C语言学习随笔-01 关于二进制

发布时间 2024-01-05 10:36:56作者: 啊波波老表
stdio.h是一个头文件(标准输入输出头文件),#include是一个预处理命令,
用来引入头文件。当编译器遇到printf()函数时,如果没有找到stdio.h头文件,会发生编译错误

//所有的C语言程序都需要包含main()函数。代码从main()函数开始执行
int main()
{
    printf()用于格式化输出到屏幕。printf()函数在“stdio.h”头文件中声明
    printf("Hello World \n");

    /*  格式化控制符  */
     %d  十进制有符号整数
     %u  十进制无符号整数
     %f  浮点数
     %s  字符串
     %c  单个字符
     %p  指针的值
     %e  指数型的浮点数
     %x,%X  无符号以十六进制表示的整数
     %o  无符号以八进制表示的整数
     %g  把输出的值按照%e或者%f类型中输出长度较小的方式输出
     %p  输出地址符
     %lu  32位无字符整数
     %llu  64位无字符整数
     \n  换行
     \f  清屏并换页
     \r  回车
     \t  Tab符
     \xhh  表示一个ASCLL码用16进制表示

    /* printf()函数原型:int printf( const char * formar,......)
       调用格式:printf("格式化字符串",输出表列)

         格式化字符串包含三种对象,分别为:
         1、字符串常量
         2、格式控制字符串
         3、转义字符

         字符串常量原样输出,在显示中起提示作用。输出表列中给出了各个输出项,要求格式控制字符串和各输出项
         数量和类型上应该一一对应。其中格式控制字符串是以%开头的字符串,在%后跟踪各种格式控制符,以说明输
         出数据的类型、宽度、精度等。

    */

    /***  格式控制字符串详解  ***/
    // %[flags][width][.prec][length]type

    1、 d/i  对应 int  输出十进制有符号的32位整数,i是老式写法
    printf("%i \n",123);//输出123

    2、  o 对应 unsigned int  无符号8进制(octal) 整数(不输出前缀0)
    printf("0%o \n",123);

    3、  u 对应 unsigned int 无符号10进制整数
    printf("%u \n",123);
 
    4、  x/X 对应 unsigned int 无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0x)
    printf("0x%x 0x%X \n",123,123);

    printf("%u \n",0xb);
    printf("%u \n", 'b');

    5、  f/lf float(double) 单精度浮点数用f,双精度浮点数用lf(printf可混用,但scanf不能混用)
    printf("%.9f %.9lf \n",0.000000123,0.000000123);

    6、  F float(double)  与f格式相同。只不过infinity和nan输出为大写形式
    //printf("%f %F %f %F \n",INFINITY,INFINITY,NAN.NAN);

    7、  e/E  float(double) 科学计数法,使用指数(Exponent)表示浮点数,此处“e”的大小写代表在输出时“e”的大小写
    printf("%e %E \n",0.000000123,0.000000123);

    8、  g float(double) 根据数值的长度,选择以最短的方式输出,%f或者%e
    printf("%g %g \n",0.000000123,0.123);

    9、  G float(double) 根据数值的长度,选择以最短的方式输出。%f或者%E
    printf("%G %G \n",0.000000123,0.123);

    10、  c char 字符串,可以把输入的数字按照ASCLL码转换为相应的字符
    printf("%c \n",65);

    11、  s char* 字符串,输出字符串中的字符直至字符串中的空字符(字符串以空字符“\0”结尾)
    printf("%s \n","测试test");

    12、  S wchar_t* 宽字符串,输出字符串中的字符直至字符串中的空字符(宽字符串以两个空字符“\0”结尾)
    /*setlocale(LC_ALL,"zh_CN.UTF-8");
    wchar_t wtest[] = L"测试test";
    printf("%S \n",wtest);*/

    13、  p void* 以16进制形式输出指针
    printf("%010p \n","lvlv");

    14、  n int* 什么也不输出,%n对应的参数是一个指向signed int的指针,在此之前输出的字符将存储到指针所指的位置
    int num = 0;
    //printf("lvlv%n",&num);
    printf("num:%d",num);

    15、  m 无 打印error值对应的出错内容
    printf("%m \n");

    16、  a/A  float(double) 十六进制p计数法输出浮点数,a为小写,A为大写
    printf("%a %A",15.15,15.15);
    
    //格式控制字符除了指明输出的数据类型,还可以包含一些其他的可选的格式说明,依序有flags,width,precision and length.

    //return 0;语句用于表示退出程序
    return 0;
}