C语言中%d,%o,%f,%e,%x的意义

格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。不同类型的数据用不同的格式字符。 格式字符有d,o,x,u,c,s,f,e,g等。 如

  1. %d整型输出,
  2. %ld长整型输出,
  3. %o以八进制数形式输出整数,
  4. %x以十六进制数形式输出整数,
  5. %u以十进制数输出unsigned型数据(无符号数)。
  6. %c用来输出一个字符,
  7. %s用来输出一个字符串,
  8. %f用来输出实数,以小数形式输出,
  9. %e以指数形式输出实数,
  10. %g根据大小自动选f格式或e格式,且不输出无意义的零。

C语言中没有格式说明符对应二进制形式的输出和输入,如果想以二进制形式输出某个数,可以使用自定义函数来实现。

#include <stdio.h>
void _printBinary(int a)//递归打印正二进制形式数
{
    if (!a)return ;
    _printBinary(a/2);
    printf ("%d", a%2);
}
void printBinary(int a)//以二进制形式打印所有int型数
{
    if (a == 0){
        printf ("0");
        return ;
    }
    if (a < 0){
        printf ("-");
        a = -a;
    }
    _printBinary(a);
}
int main()
{
    int a = 11;
    printBinary(a);
    return 0;
}

比如这里的printf("c=%#x\n",c);什么意思呢:

这里的"c=%#x\n"意思是:是一个格式控制符,其中c=是普通字符,%#x是格式说明,\n是转义字符;其中的%#表示的输出提示方式,如果是8进制,在前面加0,如果是十进制,不加任何字符,如果是十六进制,会加上0x
举例说明:当c='\x41';//这里应该是单引号
当执行:printf("c=%#o\n",c);输出的是:0101(把16进制41转化为2进制)
printf("c=%#d\n",c);输出的是:65(把16进制41转化为10进制)
printf("c=%#x\n",c);输出的是:0x41

scanf(控制字符,地址列表) 格式字符的含义同printf函数,地址列表是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。如scanf("%d%c%s",&a,&b,str);

posted @ 2017-09-11 07:42  JasonHsu  阅读(2711)  评论(0)    收藏  举报