auの日記

プログラミング初心者の日記。(auはハンドルネームです)

C言語のvoid型を分岐でreturnする方法

auです。
void型の関数を使用していて、int型みたいに"return 0"をしようとするとwarningで返されるのでどうすればいいかと思い調べてみました。

return 0で返そうとしてみる

以下のようなプログラムを組み、void型の中でreturn 0で返そうとしました。

#include <stdio.h>

void sum(void) {
    return 0;
}

int main(void) {
    sum();
    return 0;
}

// compile結果
void2.c: In function ‘sum’:
void2.c:4:12: warning: ‘return’ with a value, in function returning void
     return 0;
            ^

warningで返されてしまい、void型にreturnがついてるよといわれてしまいました。
しかし、if分岐などで途中で関数を終了させたい場合などでreturnを使いたくなると思います。
ですので、warningの出ないvoid型のreturnの方法について調べてみました。

void型でwarningの出ないreturnのやり方

warningの出ないreturnの仕方は「return;」でした。考えてみれば「あぁ、なるほど」という内容でした。
return;を使って自然数を足し算するプログラムを組みました。

#include <stdio.h>

void nat_sum(int a, int b) {
    int sum = a + b;
    if (sum < 0) {
        printf("自然数にはなりません\n");
        return;
    }
    printf("%d + %d = %d\n", a, b, sum);
}
int main(void) {
    int a = 0;
    int b = 0;

    printf("1つ目の数字: ");
    scanf("%d", &a);

    printf("2つ目の数字: ");
    scanf("%d", &b);

    nat_sum(a, b);
    
    return 0;
}

// 実行結果
1つ目の数字: 0
2つ目の数字: -1
自然数にはなりません
0 + -1 = 31

1つ目の数字: 1
2つ目の数字: 2
1 + 2 = 3