Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

セミコロンなしで「Hello World」を出力するCプログラムの書き方

本記事では、セミコロンを一切使わずに「Hello World」というテキストを出力するCプログラムの書き方を解説します。

通常であれば、main()関数内に printf("Hello World"); と記述するだけで、簡単にテキストを画面へ出力できます。しかし、この方法では行末にセミコロンが必要になってしまいます。

セミコロンを回避するテクニック

セミコロンを避けるためには、ちょっとしたトリックを活用します。ポイントは、printf() 文を if 文の条件式の中に記述することです。

printf() 関数は、出力した文字列の長さ(文字数)を戻り値として返します。「Hello World」は11文字であるため、戻り値は0以外の値になります。その結果、if 文の条件は真と評価され、テキストが画面に出力される仕組みです。

サンプルコード

#include<stdio.h>
main() {
   if(printf("Hello World")) {
   }
}

実行結果

Hello World

補足:while文での応用

同様の考え方は while 文にも応用できます。たとえば while(!printf("Hello World")){} のように記述しても、セミコロンなしで1回だけテキストを出力できます。printf() が11を返すため !11 は0となり、ループは1回で終了するからです。

なお、現在のC標準(C99以降)では、main関数は int main(void) のように int 型の戻り値を明示することが推奨されています。移植性の高いコードを書く場合は、この点にも注意しましょう。

  1. C言語でO(1)の追加メモリ領域のみを使ってn×nのスパイラル行列を出力する方法

    正の整数 n が与えられたとき、追加の作業用メモリを O(1) しか使用せずに、時計回り方向の n×n スパイラル行列を生成して出力する方法を解説します。スパイラル行列とは、円の原点から出発し、時計回りに渦を描くように値を埋めていく行列のことです。ここでは、2 → 4 → 6 → 8 → 10 → 12 → 14 → 16 → 18 というように偶数を渦状に配置した行列を、O(1) の空間計算量で出力することを目標とします。以下にスパイラル行列の例を示します。実行例入力: 3 出力: 9 8 7 2 1 6 3 4 1メモリを無制限に使えばこの問題は簡単に解けますが、そ

  2. 【Python】ループを使わずに数列を出力する方法:再帰呼び出しを活用した実装

    はじめに 本記事では、以下の問題に対する解決策について詳しく解説します。 問題の概要 2つの整数 N と K が与えられたとき、N が 0 より大きい間は N から K を引き続けます。そして N が 0 以下になったら、今度は元の値 N に戻るまで K を足していきます。 入力例 N = 10 K = 4 出力例 10 6 2 -2 2 6 10 アルゴリズムの考え方 N が 0 より大きい間、関数を再帰的に呼び出し続けます(各呼び出しごとに N から K を減算します)。 数値が 0 以下になったら、元の値に戻るまで各呼び出しごとに K を加算します。 加算と減算は同じ1つの関数