printf函数中%符号的使用

%是我们在初学阶段打印中必不可少的符号,像是%d打印十进制整形,%u打印无符号十进制整型,%p打印地址。。。

所以我们在想打印不同类型的话该怎么选择。。

首先,比较常用的%d,是被用来打印十进制整形的。%u打印无符号十进制整型,%X/x都是用来打印16进制转化后的无符号整型(这里的x不包含16进制写法下的0x,如果想要显示0x,要在%和X/x中间添加#,x的大小写仅与输出的16进制中的字母大小写相关。),%o是用来打印8进制的无符号整型。%c是用来打印字符,也可以把输入的数字按照ASCII码相应转换为对应的字符,下方代码中的65的ASCII值为字符A。

#include <stdio.h>
int main() {
    char ch = 'w';
    int count = -1234;
    // 显示整数
    printf("十进制整型 %d\n无符号的十进制整型 %u\n", count, count);
    printf("无前缀0x的十六进制 %X \n有前缀的16进制型 %#x \n无前缀的8进制 %o\n", count, count, count);
    // 显示字符
    printf("显示字符 %c %c\n", ch,65);
    return 0;
}

代码运行结果如图

 

 因为原始的count为负数,原码为10000000000000000000010011010010

                                          补码为11111111111111111111101100101110

由于%u的存在,将原count的补码当作原码进行翻译,才会输出429466062。


接下来是%f,%lf,%e/E,%g/G,这四个输出的均为double类型的浮点数

%f和%lf就是用来打印默认为小数点后六位精度的浮点数

%e是将浮点数进行科学计数法后打印,e的大小写仅决定了输出中的e的大小写

%g是根据数值不同自动选择 %f 或 %e,%e 格式在指数小于-4或指数大于等于精度时用使用,g的大小写也仅跟输出的e的大小写相关。

int main()
{
    double f = 123.456;
    // 显示浮点数
    printf("R浮点数 \n%f %lf\n%e %E\n", f, f, f, f);

    printf("%g\n", 0.00001234);
    printf("%G\n", 0.00001234);
    printf("%g\n", 0.0001234);

}

 

最后是%s和%p

%s是以字符串的形式打印,直到遇到0或'\0'(因为'\0'的ASCII码值为0)才会停下,如果没遇到就会在之后的内存空间里一直寻找,直至找到。

%p就是以16进制形式输出指针。

int main()
{//以字符串的形式打印数组
    char arr1[] = { 'a','b','c','d','e','f' };
    char arr2[] = { 'a','b','c','d','e','f','\0'};
    char arr3[] = { 'a','b','c','d','e','f',0 };
    char arr4[] = "abcdef";
    printf("%s\n%s\n%s\n%s\n", arr1, arr2, arr3,arr4);

    //打印地址
    printf("%p\n%p\n", &arr1, &arr4);


    return 0;
}

 

 像arr1中就会打印出烫烫烫烫烫,这就是没找到0或'\0',但arr4中因为是以字符串的形式存入的,自带了'\0',所以不会出现这样的问题。

有写的不好的地方欢迎各位指出并改正

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值