When I tried to execute the attached file mycalc.c with a command line
argument, it could not be executed normally only in the case of '*'.
'+', '-' and '/' can be executed normally, but the compiler cannot
execute '*' normally. Isn't this a gcc bug?


~/Clearning$ ./mycalc 20 * 30
用法:mycalc 数値1 演算子 数値2
#include <stdio.h>
#include <stdlib.h>             // for exit()
#include <string.h>             // for strcpy() strlen()
int main(int argc, char *argv[])
{
     double d1, d2,ans;
     char ope[80];
     
     if (argc != 4) {
          printf("用法:mycalc 数値1 演算子 数値2\n");
          exit(1);
     }
     d1 = atof(argv[1]);
     d2 = atof(argv[3]);
     strcpy(ope,argv[2]);
     if (strlen(ope) != 1) {
          printf("演算子が1文字でない\n");
          exit(1);
     }
     switch (ope[0]) {
     case '+':
          ans = d1 + d2;
          break;
     case '-':
          ans = d1 - d2;
          break;
     case '*':
          ans = d1 * d2;
          break;
     case '/':
          if (d2 == 0.0) ans = 0.0;    // 0除算対応
          else ans = d1 / d2;
          break;
     default:
          printf("演算子が違っている\n");
          exit(1);
     }
     printf("%f\n",ans);
}

Reply via email to