for文の再初期化式の中に複数の文は書けるので、Hello,worldを数回出すプログラムは2通りの記述方法があるのですが:
#include <stdio.h> main () { int i; for(i = 0; i < 3; i++){ printf("Hello,world\n"); } }
という書きかたと
#include <stdio.h> main() { int i; for(i = 0; i < 3; printf("Hello,world"),i++){ } }
という書き方があります。
どちらも動作は同じでちゃんと3回出力されます。という事は生成されるアセンブラも同じはず..
とおもってgcc -Sでチェックしてみたところ、両者とも同じアセンブラが生成されました
.file "test.c" .section .rodata .LC0: .string "Hello,world" .text .globl main .type main, @function main: .LFB0: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 andl $-16, %esp subl $32, %esp movl $0, 28(%esp) jmp .L2 .L3: movl $.LC0, (%esp) call puts addl $1, 28(%esp) .L2: cmpl $2, 28(%esp) jle .L3 leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .LFE0: .size main, .-main .ident "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3" .section .note.GNU-stack,"",@progbits