进制与输出格式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1119278087/article/details/48753459

二进制 B 八进制 O 十进制 D 十六进制 X
各个进制之间的转换就不多说了。

#include <stdio.h>
int main(){

    int i=-858993460, j=0x1c;

    printf("十进制i=%d j=%d\n",i,j);
    printf("八进制i=%o j=%o\n",i,j);
    printf("十六进制i=%x j=%x\n",i,j);
    printf("十六进制i=%X j=%X\n",i,j);

  //return i;  //这个return有和没有都能运行成功,这与Java有别
}

运行结果
可以看出,%x 和 %X 的区别就在于输出时的大小写(16进制时)。总结这些输出格式:
%d 有符号10进制整数
%i 有符号10进制整数
%o 无符号8进制整数
%u 无符号10进制整数
%x 无符号的16进制数字,并以小写abcdef表示
%X 无符号的16进制数字,并以大写ABCDEF表示
%F/f 浮点数
%E/e 用科学表示格式的浮点数
%g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数
%c 单个字符
%s 字符串

现在用个例子来重点看%g和%G

#include <stdio.h>
int main(){

    double d = 12.3450,dd = 123456.7890,ddd = 0.0000123;
    char m = '%';

    printf("以%cf数输出:d=%f \tdd=%f\tddd=%f\n",m,d,dd,ddd);
    printf("以%ce数输出:d=%e \tdd=%e\tddd=%e\n",m,d,dd,ddd);
    printf("以%cg数输出:d=%g \t\tdd=%g\t\tddd=%g\n",m,d,dd,ddd);
    printf("以%cG数输出:d=%G \t\tdd=%G\t\tddd=%G\n",m,d,dd,ddd);
}

这里写图片描述

《C Primer Plus》(5th)中是这样描述的:
%g: 根据数值不同自动选择 %f 或 %e ,%e 格式在指数小于-4或者大于等于精度时使用。
%G :(基本上同上)
《C程序设计》(谭浩强 4th)上是这样描述的:
g格式符。用来输出浮点数,系统自动选f格式或e格式输出,选择其中长度较短的格式,不输出无意义的0

猜你喜欢

转载自blog.csdn.net/qq1119278087/article/details/48753459