私の友人は、IF/WHILE/FOR
およびセミコロンなしで「hello world」を出力するCプログラムを書くことができると言っています。最小限の調査の後、私はそれが不可能だと彼女に言いました。出来ますか?
私は、インクルードファイルからセミコロンを盗む「ポータブル」な方法を見つけようとしています。これはLinuxで動作します:
int main(int ac, char **av)
{
#define typedef
#define uint8_t a[printf("hello world\n")]
#include <stdint.h>
}
これにより、1つのtypedef unsigned char uint8_t
は私のprintfになります。
働いた別のトリックは、#define
stdint.h
は、セミコロンの束になります。
これらは両方ともFreeBSDでフラットになります。これは、プライベートな中間型(__uint8_t
)これは、引用された例ではtypedefの削除に失敗し、他の場合ではセミコロン以外のすべてを正常に削除できないことを意味します。
インクルードファイルからセミコロンをきれいに盗むことが可能であるべきだと思われます。誰かが私の試みを改善できますか?
#include <stdio.h>
int main() {
switch (printf("Hello, world!\n")) {}
}
友人が「ああ、スイッチも使えない」と言ったら:
#include <stdio.h>
int main(int argc, char *argv[printf("Hello, world!\n")]) {}
質問の正確な文言に依存するため、これを提案するかどうかが心配です。
#error hello world
(他に何もなければ、おそらく「main
なしでhello worldを印刷するにはどうすればよいか...」
iF/WHILE/FORおよびセミコロンなしで「hello world」を出力するCプログラムを作成することができます。
簡単です。 Cでは大文字と小文字が区別されることに注意してください。
int main()
{
if (printf("Hello, World\n")){}
}
if
はCのキーワードですが、IF
はそうではありません。
次のような制限を回避することもできます
#define X i##f
#define Y whi##le
#define Z f##or
#define W swi##tch
どうですか:
#include <stdio.h>
int main(void *HAHA[printf("Hello world!\n")]) {}
クールではない:)
switchステートメントを使用して、希望する出力を取得できます。以下にコードを示します。
#include<stdio.h>
int main()
{
switch(printf("hello world"))
return 0;
}
これがあなたを助けることを願っています