Encontrei este programa C na Web:
#include <stdio.h>
int main(){
printf("C%d\n",(int)(90-(-4.5//**/
-4.5)));
return 0;
}
O interessante deste programa é que, quando é compilado e executado no modo C89, ele é impresso C89
e quando é compilado e executado no modo C99, é impresso C99
. Mas não sou capaz de descobrir como esse programa funciona.
Você pode explicar como o segundo argumento printf
funciona no programa acima?
Bom truque - mas falha com
—
usr2564301
gcc
. Sem std=c99
você receberá um aviso, e se você ignorá-lo, gcc
vai ainda interpretar a //
como início de comentário (ah - você tem que usar -pedantic
. Bem eu tenho que por padrão.)
@Ongware Bem, eu fiquei
—
Ikh
C89
com explícito std=c89
no gcc 4.9.2.
Caso alguém encontre isso enquanto procura uma maneira de testar o suporte ao C99; use algo como
—
Arkku
#if __STDC_VERSION__ >= 199901L
, não o //
truque de comentários. =)
Ele também imprime "C99" para C11 ...
—
Lundin
//
comentário no estilo C ++ foi introduzido no C99.