原来是我错付了 发表于 2022-11-12 18:33:54

%02x

#include<stdio.h>
int main()
{
                char ch;int sum=0;
                while ((ch=getchar())!='\n')
                {
                        sum+=ch;
                }
                printf("0x%02x",sum);
                return 0;
}
为什么输出结果还会出现三位数    %02x怎么没用

jackz007 发表于 2022-11-12 18:53:44

本帖最后由 jackz007 于 2022-11-12 19:01 编辑

       任何时候 printf() 的输出都不会 "削足适履",忠实于变量值,这是 printf() 首先需要遵守的信条。如果变量的值是 3 位数,绝对不可能因为格式描述符的原因输出成 2 位数或者 1 位数。
       %02x 只是在输出是 1 位十六进制数的时候前面用 0 补成 2 位,如果实际输出位数超出 2,那么,这个域宽 2 就失效,会按实际字符数输出。不仅 %02x 是这样,%04d 也一样。
页: [1]
查看完整版本: %02x