学校で関数ポインタの練習をしています。
簡単なプログラムの課題がでたのですが分からないことが1つあります。
void型は"return-1" で強制終了すると思うのですが、int型の関数ではどのようにして強制終了すればよいですか?
課題は、2つの値(int型整数)を受け取って演算を行うというものです。
ユーザは1~4の値入力に
より演算の種類を決定します。
"div関数において0で割り算する場合、エラーを返して強制終了すること"という条件があります。
現在は、printf()でerrorと表示するだけで、特別な値は返していません。
エラーを返して強制終了はしていないと思うのですが、どのような値を返せばいいでしょうか?
c
1#include<stdio.h> 2 3int add(int a, int b); 4int sub(int a, int b); 5int mul(int a, int b); 6int divi(int a, int b); 7 8int main() { 9 int cond; 10 int x, y; 11 int(*pA)(int a, int b); 12 int(*pS)(int a, int b); 13 int(*pM)(int a, int b); 14 int(*pD)(int a, int b); 15 pA = add; 16 pS = sub; 17 pM = mul; 18 pD = divi; 19 printf("Please Input num1 :"); 20 scanf("%d", &x); 21 printf("Please Input num2 :"); 22 scanf("%d", &y); 23 printf("Please Input Operator :"); 24 scanf("%d", &cond); 25 if (cond == 1) { 26 printf("num1 + num2 = %d \n", (*pA)(x, y)); 27 } 28 else if (cond == 2) { 29 printf("num1 - num2 = %d \n", (*pS)(x, y)); 30 } 31 else if (cond == 3) { 32 printf("num1 * num2 = %d \n", (*pM)(x, y)); 33 } 34 else if (cond == 4) { 35 if (y == 0) { 36 printf("error\n"); 37 38 } 39 else { 40 printf("num1 ÷ num2 = %d \n", (*pD)(x, y)); 41 } 42 } 43 else { 44 printf("error \n"); 45 return -1; 46 } 47 48 return 0; 49} 50 51int add(int a, int b) { 52 return a + b; 53} 54int sub(int a, int b) { 55 return a - b; 56} 57int mul(int a, int b) { 58 return a * b; 59} 60int divi(int a, int b) { 61 return a / b; 62}
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。