int main() {
  printf("%3d\n", 0);
  printf("%3d\n", 123456789);
  printf("%3d\n", -10);
  printf("%3d\n", -123456789);
  printf("%-3d\n", 0);
  printf("%-3d\n", 123456789);
  printf("%-3d\n", -10);
  printf("%-3d\n", -123456789);
  printf("%03d\n", 0);
  printf("%03d\n", 1);
  printf("%03d\n", 123456789);
  printf("%03d\n", -10);
  printf("%03d\n", -123456789);
  printf("'%5d'\n", 10);
  printf("'%-5d'\n", 10);
  printf("'%05d'\n", 10);
  printf("'%+5d'\n", 10);
  printf("'%-+5d'\n", 10);
  printf("'%.1f'\n", 10.3456);
  printf("'%.2f'\n", 10.3456);
  printf("'%8.2f'\n", 10.3456);
  printf("'%8.4f'\n", 10.3456);
  printf("'%08.2f'\n", 10.3456);
  printf("'%-8.2f'\n", 10.3456);
  printf("'%-8.2f'\n", 101234567.3456);
  printf("Hello\tworld\n");
  printf("Hello\nworld\n");
  printf("Hello world\n");
  printf("C:\\Windows\\System32\\\n");
  int intValue = 2;
  printf("1.output integer normally : %i\n", intValue);
  printf("2.positive, two bit reserved, (before number)other bits blank with "
         "white space : #%2i#\n",
         intValue);
  printf("3.negative，two bit reserved, (after number)other bits blank with "
         "white space : #%-2i#\n",
         intValue);
  printf("4.two bit reserved, other bits blank with zero : #%02i#\n", intValue);
  int intValue2 = 23;
  printf("5.本身两位数，格式化并无变化:#%02i#\n", intValue2);
  printf("6.动态保留位宽,其他位以0填充:#%0*i#\n", 4, intValue2);
  float floatValue = 6.9f;
  printf("7.正常输出浮点型：%f\n", floatValue);
  printf("8.格式化小数点保留两位，其他位以0填充:#%.2f#\n", floatValue);
  float pi = 3.141592653f;
  printf("9.正常输出浮点型，有效保留7位：%f\n", pi);
  printf("10.格式化保留10位，并不会有影响，最大有效位为7位：%.10f\n", pi);
  double doubleValue = 3.1415926531;
  printf("11.正常输出double类型：%lf\n", doubleValue);
  printf("12.格式化保留10位，有效保留15位,会以15位为位宽：%.10lf\n",
         doubleValue);
  char charValue = 'a';
  printf("13.字符输出:%c\n", charValue);
  printf("%*sdd\n", 4, " ");
  printf("%.*sdd", 6, " ");
  printf("a\n");
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
lea    0xf01(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xef1(%rip),%rdi
mov    $0x75bcd15,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xede(%rip),%rdi
mov    $0xfffffff6,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xecb(%rip),%rdi
mov    $0xf8a432eb,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xebd(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xead(%rip),%rdi
mov    $0x75bcd15,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe9a(%rip),%rdi
mov    $0xfffffff6,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe87(%rip),%rdi
mov    $0xf8a432eb,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe7a(%rip),%rdi
xor    %esi,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe6a(%rip),%rdi
mov    $0x1,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe57(%rip),%rdi
mov    $0x75bcd15,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe44(%rip),%rdi
mov    $0xfffffff6,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe31(%rip),%rdi
mov    $0xf8a432eb,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe24(%rip),%rdi
mov    $0xa,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe18(%rip),%rdi
mov    $0xa,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe0d(%rip),%rdi
mov    $0xa,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe02(%rip),%rdi
mov    $0xa,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xdf7(%rip),%rdi
mov    $0xa,%esi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xded(%rip),%rdi
movsd  0xd9c(%rip),%xmm0
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xddf(%rip),%rdi
movsd  0xd86(%rip),%xmm0
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xdd1(%rip),%rdi
movsd  0xd70(%rip),%xmm0
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xdc4(%rip),%rdi
movsd  0xd5a(%rip),%xmm0
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xdb7(%rip),%rdi
movsd  0xd44(%rip),%xmm0
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xdab(%rip),%rdi
movsd  0xd2e(%rip),%xmm0
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xd95(%rip),%rdi
movsd  0xd10(%rip),%xmm0
mov    $0x1,%al
call   1030 <printf@plt>
lea    0xd89(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd88(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd87(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd86(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x2,-0x4(%rbp)
mov    -0x4(%rbp),%esi
lea    0xd84(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%esi
lea    0xd93(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%esi
lea    0xdda(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%esi
lea    0xe22(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x17,-0x8(%rbp)
mov    -0x8(%rbp),%esi
lea    0xe43(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%edx
lea    0xe64(%rip),%rdi
mov    $0x4,%esi
mov    $0x0,%al
call   1030 <printf@plt>
movss  0xc64(%rip),%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe6c(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe73(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movss  0xc25(%rip),%xmm0
movss  %xmm0,-0x10(%rbp)
movss  -0x10(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe8e(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movss  -0x10(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xea8(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movsd  0xbd2(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
lea    0xed7(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movsd  -0x18(%rbp),%xmm0
lea    0xee7(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movb   $0x61,-0x19(%rbp)
movsbl -0x19(%rbp),%esi
lea    0xf1c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf22(%rip),%rdi
mov    $0x4,%esi
lea    0xf1d(%rip),%rdx
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf11(%rip),%rdi
mov    $0x6,%esi
lea    0xf03(%rip),%rdx
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xefe(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
lea    0xf00(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    $0x75bcd15,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    $0xfffffff6,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    $0xf8a432eb,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xec5(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    $0x75bcd15,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    $0xfffffff6,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    $0xf8a432eb,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe8b(%rip),%rbx
mov    %rbx,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    $0x75bcd15,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    $0xfffffff6,%esi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
mov    $0xf8a432eb,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe42(%rip),%rdi
mov    $0xa,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe36(%rip),%rdi
mov    $0xa,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe2b(%rip),%rdi
mov    $0xa,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe20(%rip),%rdi
mov    $0xa,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe15(%rip),%rdi
mov    $0xa,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe0b(%rip),%rdi
movsd  0xda2(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xdfd(%rip),%rdi
movsd  0xd8c(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xdef(%rip),%rdi
movsd  0xd76(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xde2(%rip),%rdi
movsd  0xd60(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xdd5(%rip),%rdi
movsd  0xd4a(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xdc9(%rip),%rbx
mov    %rbx,%rdi
movsd  0xd31(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
movsd  0xd2a(%rip),%xmm0
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0x1084(%rip),%rdi
call   1030 <puts@plt>
lea    0x1084(%rip),%rdi
call   1030 <puts@plt>
lea    0x1084(%rip),%rdi
call   1030 <puts@plt>
lea    0x1084(%rip),%rdi
call   1030 <puts@plt>
lea    0xd78(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xd85(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xdca(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe10(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe36(%rip),%rdi
mov    $0x17,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe55(%rip),%rdi
mov    $0x4,%esi
mov    $0x17,%edx
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe6e(%rip),%rdi
movsd  0xc72(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xe76(%rip),%rdi
movsd  0xc5c(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xe9f(%rip),%rdi
movsd  0xc4e(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xeba(%rip),%rdi
movsd  0xc38(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xef3(%rip),%rdi
movsd  0xc2a(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xf00(%rip),%rdi
movsd  0xc14(%rip),%xmm0
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xf35(%rip),%rdi
mov    $0x61,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf36(%rip),%rdi
lea    0xf36(%rip),%rbx
mov    $0x4,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf22(%rip),%rdi
mov    $0x6,%esi
mov    %rbx,%rdx
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf4c(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
pop    %rbx
ret

LLVM IR (-O0):
@.str = [5 x i8] c"%3d\0A\00"
@.str.1 = [6 x i8] c"%-3d\0A\00"
@.str.2 = [6 x i8] c"%03d\0A\00"
@.str.3 = [7 x i8] c"'%5d'\0A\00"
@.str.4 = [8 x i8] c"'%-5d'\0A\00"
@.str.5 = [8 x i8] c"'%05d'\0A\00"
@.str.6 = [8 x i8] c"'%+5d'\0A\00"
@.str.7 = [9 x i8] c"'%-+5d'\0A\00"
@.str.8 = [8 x i8] c"'%.1f'\0A\00"
@.str.9 = [8 x i8] c"'%.2f'\0A\00"
@.str.10 = [9 x i8] c"'%8.2f'\0A\00"
@.str.11 = [9 x i8] c"'%8.4f'\0A\00"
@.str.12 = [10 x i8] c"'%08.2f'\0A\00"
@.str.13 = [10 x i8] c"'%-8.2f'\0A\00"
@.str.14 = [13 x i8] c"Hello\09world\0A\00"
@.str.15 = [13 x i8] c"Hello\0Aworld\0A\00"
@.str.16 = [13 x i8] c"Hello world\0A\00"
@.str.17 = [22 x i8] c"C:\\Windows\\System32\\\0A\00"
@.str.18 = [32 x i8] c"1.output integer normally : %i\0A\00"
@.str.19 = [88 x i8] c"2.positive, two bit reserved, (before number)other bits blank with white space : #%2i#\0A\00"
@.str.20 = [89 x i8] c"3.negative\EF\BC\8Ctwo bit reserved, (after number)other bits blank with white space : #%-2i#\0A\00"
@.str.21 = [57 x i8] c"4.two bit reserved, other bits blank with zero : #%02i#\0A\00"
@.str.22 = [50 x i8] c"5.\E6\9C\AC\E8\BA\AB\E4\B8\A4\E4\BD\8D\E6\95\B0\EF\BC\8C\E6\A0\BC\E5\BC\8F\E5\8C\96\E5\B9\B6\E6\97\A0\E5\8F\98\E5\8C\96:#%02i#\0A\00"
@.str.23 = [49 x i8] c"6.\E5\8A\A8\E6\80\81\E4\BF\9D\E7\95\99\E4\BD\8D\E5\AE\BD,\E5\85\B6\E4\BB\96\E4\BD\8D\E4\BB\A50\E5\A1\AB\E5\85\85:#%0*i#\0A\00"
@.str.24 = [30 x i8] c"7.\E6\AD\A3\E5\B8\B8\E8\BE\93\E5\87\BA\E6\B5\AE\E7\82\B9\E5\9E\8B\EF\BC\9A%f\0A\00"
@.str.25 = [63 x i8] c"8.\E6\A0\BC\E5\BC\8F\E5\8C\96\E5\B0\8F\E6\95\B0\E7\82\B9\E4\BF\9D\E7\95\99\E4\B8\A4\E4\BD\8D\EF\BC\8C\E5\85\B6\E4\BB\96\E4\BD\8D\E4\BB\A50\E5\A1\AB\E5\85\85:#%.2f#\0A\00"
@.str.26 = [49 x i8] c"9.\E6\AD\A3\E5\B8\B8\E8\BE\93\E5\87\BA\E6\B5\AE\E7\82\B9\E5\9E\8B\EF\BC\8C\E6\9C\89\E6\95\88\E4\BF\9D\E7\95\997\E4\BD\8D\EF\BC\9A%f\0A\00"
@.str.27 = [79 x i8] c"10.\E6\A0\BC\E5\BC\8F\E5\8C\96\E4\BF\9D\E7\95\9910\E4\BD\8D\EF\BC\8C\E5\B9\B6\E4\B8\8D\E4\BC\9A\E6\9C\89\E5\BD\B1\E5\93\8D\EF\BC\8C\E6\9C\80\E5\A4\A7\E6\9C\89\E6\95\88\E4\BD\8D\E4\B8\BA7\E4\BD\8D\EF\BC\9A%.10f\0A\00"
@.str.28 = [35 x i8] c"11.\E6\AD\A3\E5\B8\B8\E8\BE\93\E5\87\BAdouble\E7\B1\BB\E5\9E\8B\EF\BC\9A%lf\0A\00"
@.str.29 = [75 x i8] c"12.\E6\A0\BC\E5\BC\8F\E5\8C\96\E4\BF\9D\E7\95\9910\E4\BD\8D\EF\BC\8C\E6\9C\89\E6\95\88\E4\BF\9D\E7\95\9915\E4\BD\8D,\E4\BC\9A\E4\BB\A515\E4\BD\8D\E4\B8\BA\E4\BD\8D\E5\AE\BD\EF\BC\9A%.10lf\0A\00"
@.str.30 = [20 x i8] c"13.\E5\AD\97\E7\AC\A6\E8\BE\93\E5\87\BA:%c\0A\00"
@.str.31 = [7 x i8] c"%*sdd\0A\00"
@.str.32 = [2 x i8] c" \00"
@.str.33 = [7 x i8] c"%.*sdd\00"
@.str.34 = [3 x i8] c"a\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca float
%4 = alloca float
%5 = alloca double
%6 = alloca i8
%7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 0)
%8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 123456789)
%9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 -10)
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 -123456789)
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 0)
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 123456789)
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 -10)
%14 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 -123456789)
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 0)
%16 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 1)
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 123456789)
%18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 -10)
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 -123456789)
%20 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), i32 10)
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), i32 10)
%22 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0), i32 10)
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i64 0, i64 0), i32 10)
%24 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.7, i64 0, i64 0), i32 10)
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), double 1.034560e+01)
%26 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0), double 1.034560e+01)
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.10, i64 0, i64 0), double 1.034560e+01)
%28 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), double 1.034560e+01)
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.12, i64 0, i64 0), double 1.034560e+01)
%30 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.13, i64 0, i64 0), double 1.034560e+01)
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.13, i64 0, i64 0), double 0x419822DE1D61E4F7)
%32 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.14, i64 0, i64 0))
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.15, i64 0, i64 0))
%34 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.16, i64 0, i64 0))
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.17, i64 0, i64 0))
store i32 2, i32* %1
%36 = load i32, i32* %1
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.18, i64 0, i64 0), i32 %36)
%38 = load i32, i32* %1
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([88 x i8], [88 x i8]* @.str.19, i64 0, i64 0), i32 %38)
%40 = load i32, i32* %1
%41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([89 x i8], [89 x i8]* @.str.20, i64 0, i64 0), i32 %40)
%42 = load i32, i32* %1
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.21, i64 0, i64 0), i32 %42)
store i32 23, i32* %2
%44 = load i32, i32* %2
%45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.22, i64 0, i64 0), i32 %44)
%46 = load i32, i32* %2
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.23, i64 0, i64 0), i32 4, i32 %46)
store float 0x401B9999A0000000, float* %3
%48 = load float, float* %3
%49 = fpext float %48 to double
%50 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.24, i64 0, i64 0), double %49)
%51 = load float, float* %3
%52 = fpext float %51 to double
%53 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.25, i64 0, i64 0), double %52)
store float 0x400921FB60000000, float* %4
%54 = load float, float* %4
%55 = fpext float %54 to double
%56 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.26, i64 0, i64 0), double %55)
%57 = load float, float* %4
%58 = fpext float %57 to double
%59 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.27, i64 0, i64 0), double %58)
store double 0x400921FB543358D4, double* %5
%60 = load double, double* %5
%61 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.28, i64 0, i64 0), double %60)
%62 = load double, double* %5
%63 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([75 x i8], [75 x i8]* @.str.29, i64 0, i64 0), double %62)
store i8 97, i8* %6
%64 = load i8, i8* %6
%65 = sext i8 %64 to i32
%66 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.30, i64 0, i64 0), i32 %65)
%67 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.31, i64 0, i64 0), i32 4, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.32, i64 0, i64 0))
%68 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i64 0, i64 0), i32 6, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.32, i64 0, i64 0))
%69 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.34, i64 0, i64 0))
ret i32 0
}

LLVM IR (-O2):
@.str = [5 x i8] c"%3d\0A\00"
@.str.1 = [6 x i8] c"%-3d\0A\00"
@.str.2 = [6 x i8] c"%03d\0A\00"
@.str.3 = [7 x i8] c"'%5d'\0A\00"
@.str.4 = [8 x i8] c"'%-5d'\0A\00"
@.str.5 = [8 x i8] c"'%05d'\0A\00"
@.str.6 = [8 x i8] c"'%+5d'\0A\00"
@.str.7 = [9 x i8] c"'%-+5d'\0A\00"
@.str.8 = [8 x i8] c"'%.1f'\0A\00"
@.str.9 = [8 x i8] c"'%.2f'\0A\00"
@.str.10 = [9 x i8] c"'%8.2f'\0A\00"
@.str.11 = [9 x i8] c"'%8.4f'\0A\00"
@.str.12 = [10 x i8] c"'%08.2f'\0A\00"
@.str.13 = [10 x i8] c"'%-8.2f'\0A\00"
@.str.18 = [32 x i8] c"1.output integer normally : %i\0A\00"
@.str.19 = [88 x i8] c"2.positive, two bit reserved, (before number)other bits blank with white space : #%2i#\0A\00"
@.str.20 = [89 x i8] c"3.negative\EF\BC\8Ctwo bit reserved, (after number)other bits blank with white space : #%-2i#\0A\00"
@.str.21 = [57 x i8] c"4.two bit reserved, other bits blank with zero : #%02i#\0A\00"
@.str.22 = [50 x i8] c"5.\E6\9C\AC\E8\BA\AB\E4\B8\A4\E4\BD\8D\E6\95\B0\EF\BC\8C\E6\A0\BC\E5\BC\8F\E5\8C\96\E5\B9\B6\E6\97\A0\E5\8F\98\E5\8C\96:#%02i#\0A\00"
@.str.23 = [49 x i8] c"6.\E5\8A\A8\E6\80\81\E4\BF\9D\E7\95\99\E4\BD\8D\E5\AE\BD,\E5\85\B6\E4\BB\96\E4\BD\8D\E4\BB\A50\E5\A1\AB\E5\85\85:#%0*i#\0A\00"
@.str.24 = [30 x i8] c"7.\E6\AD\A3\E5\B8\B8\E8\BE\93\E5\87\BA\E6\B5\AE\E7\82\B9\E5\9E\8B\EF\BC\9A%f\0A\00"
@.str.25 = [63 x i8] c"8.\E6\A0\BC\E5\BC\8F\E5\8C\96\E5\B0\8F\E6\95\B0\E7\82\B9\E4\BF\9D\E7\95\99\E4\B8\A4\E4\BD\8D\EF\BC\8C\E5\85\B6\E4\BB\96\E4\BD\8D\E4\BB\A50\E5\A1\AB\E5\85\85:#%.2f#\0A\00"
@.str.26 = [49 x i8] c"9.\E6\AD\A3\E5\B8\B8\E8\BE\93\E5\87\BA\E6\B5\AE\E7\82\B9\E5\9E\8B\EF\BC\8C\E6\9C\89\E6\95\88\E4\BF\9D\E7\95\997\E4\BD\8D\EF\BC\9A%f\0A\00"
@.str.27 = [79 x i8] c"10.\E6\A0\BC\E5\BC\8F\E5\8C\96\E4\BF\9D\E7\95\9910\E4\BD\8D\EF\BC\8C\E5\B9\B6\E4\B8\8D\E4\BC\9A\E6\9C\89\E5\BD\B1\E5\93\8D\EF\BC\8C\E6\9C\80\E5\A4\A7\E6\9C\89\E6\95\88\E4\BD\8D\E4\B8\BA7\E4\BD\8D\EF\BC\9A%.10f\0A\00"
@.str.28 = [35 x i8] c"11.\E6\AD\A3\E5\B8\B8\E8\BE\93\E5\87\BAdouble\E7\B1\BB\E5\9E\8B\EF\BC\9A%lf\0A\00"
@.str.29 = [75 x i8] c"12.\E6\A0\BC\E5\BC\8F\E5\8C\96\E4\BF\9D\E7\95\9910\E4\BD\8D\EF\BC\8C\E6\9C\89\E6\95\88\E4\BF\9D\E7\95\9915\E4\BD\8D,\E4\BC\9A\E4\BB\A515\E4\BD\8D\E4\B8\BA\E4\BD\8D\E5\AE\BD\EF\BC\9A%.10lf\0A\00"
@.str.30 = [20 x i8] c"13.\E5\AD\97\E7\AC\A6\E8\BE\93\E5\87\BA:%c\0A\00"
@.str.31 = [7 x i8] c"%*sdd\0A\00"
@.str.32 = [2 x i8] c" \00"
@.str.33 = [7 x i8] c"%.*sdd\00"
@str = [12 x i8] c"Hello\09world\00"
@str.35 = [12 x i8] c"Hello\0Aworld\00"
@str.36 = [12 x i8] c"Hello world\00"
@str.37 = [21 x i8] c"C:\\Windows\\System32\\\00"
@str.38 = [2 x i8] c"a\00"
define i32 @main() {
%1 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 0)
%2 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 123456789)
%3 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 -10)
%4 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 -123456789)
%5 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 0)
%6 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 123456789)
%7 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 -10)
%8 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 -123456789)
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 0)
%10 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 1)
%11 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 123456789)
%12 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 -10)
%13 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 -123456789)
%14 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), i32 10)
%15 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), i32 10)
%16 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0), i32 10)
%17 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i64 0, i64 0), i32 10)
%18 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.7, i64 0, i64 0), i32 10)
%19 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), double 1.034560e+01)
%20 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0), double 1.034560e+01)
%21 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.10, i64 0, i64 0), double 1.034560e+01)
%22 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0), double 1.034560e+01)
%23 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.12, i64 0, i64 0), double 1.034560e+01)
%24 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.13, i64 0, i64 0), double 1.034560e+01)
%25 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.13, i64 0, i64 0), double 0x419822DE1D61E4F7)
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str, i64 0, i64 0))
%27 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.35, i64 0, i64 0))
%28 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.36, i64 0, i64 0))
%29 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @str.37, i64 0, i64 0))
%30 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.18, i64 0, i64 0), i32 2)
%31 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([88 x i8], [88 x i8]* @.str.19, i64 0, i64 0), i32 2)
%32 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([89 x i8], [89 x i8]* @.str.20, i64 0, i64 0), i32 2)
%33 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @.str.21, i64 0, i64 0), i32 2)
%34 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.22, i64 0, i64 0), i32 23)
%35 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.23, i64 0, i64 0), i32 4, i32 23)
%36 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.24, i64 0, i64 0), double 0x401B9999A0000000)
%37 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @.str.25, i64 0, i64 0), double 0x401B9999A0000000)
%38 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.26, i64 0, i64 0), double 0x400921FB60000000)
%39 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @.str.27, i64 0, i64 0), double 0x400921FB60000000)
%40 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @.str.28, i64 0, i64 0), double 0x400921FB543358D4)
%41 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([75 x i8], [75 x i8]* @.str.29, i64 0, i64 0), double 0x400921FB543358D4)
%42 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.30, i64 0, i64 0), i32 97)
%43 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.31, i64 0, i64 0), i32 4, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.32, i64 0, i64 0))
%44 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i64 0, i64 0), i32 6, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.32, i64 0, i64 0))
%45 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([2 x i8], [2 x i8]* @str.38, i64 0, i64 0))
ret i32 0
}