c语言转换说明符总结(%d,%i,%u,%f,%o,%x,%X,%p,%s,%g,%e)

#include<stdio.h>
int main(){
    int hex;
    while(~scanf("%x",&hex));{ // %i也可
         printf("%d\n",hex);
    }
}

alt

注意:

一、%d与%i的区别:

(1)在printf格式中使用,没有区别。

(2)在 scanf 格式串中使用时,区别如下:

a. 在scanf格式中,%d 只与十进制形式的整数相匹配。

b. 而%i 则可以匹配八进制、十进制、十六进制表示的整数。·

c. 例如:如果输入的数字有前缀 0(018、025),%i将会把它当作八进制数来处理,如果有前缀0x (0x54),它将以十六进制来处理。

二、%p和%x的区别:

(1)输出类型相同:都是无符号十六进制。

(2)输出结果不同:

a. %p以十六进制的形式是打印地址,编译器多少位,就打印多少位。比如:32位的打印32位,64位打印64位(不够的左边补0);

b. %x的输出位数不固定,比如:0x01,0x0101,0x01010101等。

c. %02x: 02表示不足两位,前面补0输出;如果超过两位,则实际输出。%.2x效果和%02x相同。%-2x,数据不足两位时,后面补空格输出,不额外补0输出; 如果超过两位,则实际输出

三、%g:

例如:3.14000000,用%g的输出结果为3.14

四、%e:

例如:%5.2e,其中,“5”代表最小输出宽度为5,即实际位数多于5时,则按实际位数输出,若实际位数少于定义的宽度5时,则补以空格或0。其中的“ .2"代表精度为2,即小数位数为2,若实际位数大于2,则截去多余的部分。”e"是格式字符,代表以指数输出,输出以大写E表示。

但这只是printf()的用法,scanf()是没有【精度】的。

五、%u:

如果它对应的值是负的,则返回时是一个2的32次方减去这个负数的绝对值。例如:-2,返回的是:4294967294。

版权声明:本文为CSDN博主「GuerrillaGod」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/Penseur2018/article/details/123249107