while sentencia resueltos que programacion lenguaje else ejercicios ejemplos condicionales c puzzle

resueltos - sentencia if en c++



hola mundo en C sin punto y coma y sin instrucciones IF/WHILE/FOR (7)

Mi amigo dice que es posible escribir un programa C que imprima "hello world" sin IF/WHILE/FOR y sin punto y coma. Después de una investigación mínima, le dije que no era posible. ¿Es posible?


es posible escribir un programa en C que imprima "hello world" sin IF / WHILE / FOR y sin punto y coma.

Fácil. Tenga en cuenta que C es sensible a mayúsculas.

int main() { if (printf("Hello, World/n")){} }

if es una palabra clave en C, IF no lo es.


He estado tratando de encontrar una forma "portátil" de robar un punto y coma de un archivo de inclusión. Esto funciona bajo Linux:

int main(int ac, char **av) { #define typedef #define uint8_t a[printf("hello world/n")] #include <stdint.h> }

Esto hace que el typedef unsigned char uint8_t convierta en mi printf.

Otro truco que funcionó fue #define cada tipo de stdint estándar, de modo que stdint.h reduce a un montón de puntos y comas.

Ambas fallan en FreeBSD porque usa tipos intermedios privados (como __uint8_t ), lo que significa que la eliminación de typedef falla en el ejemplo citado y me impide eliminar todos los puntos y comas que no sean en el otro caso.

Parece que debería ser posible robar un punto y coma limpiamente de un archivo de inclusión. ¿Alguien puede mejorar mi intento?


Me da miedo sugerir esto porque depende de la redacción exacta de la pregunta, pero:

#error hello world

(si nada más, tal vez evitará un seguimiento "¿cómo se imprime el mundo hola sin main " ...)


Qué pasa:

#include <stdio.h> int main(void *HAHA[printf("Hello world!/n")]) {}

no es C genial :)


También podría solucionar la limitación como

#define X i##f #define Y whi##le #define Z f##or #define W swi##tch


puede usar la declaración de cambio para obtener su resultado deseado, aquí está el código a continuación

#include<stdio.h> int main() { switch(printf("hello world")) return 0; }

Espero que esto te ayudará


#include <stdio.h> int main() { switch (printf("Hello, world!/n")) {} }

Si tu amigo dice "oh, tampoco puedes usar el interruptor", entonces:

#include <stdio.h> int main(int argc, char *argv[printf("Hello, world!/n")]) {}