C言語で絶対値を定義しようと思い、以下のように定義しました。

何回コンパイルしてもエラーばかり出てくるので、どこかが間違ってるのだとは思いますが、どこが間違っているのかがわかりませんでした。下記のプログラムの前半「int
myabs1(int x)」のところは正しいと思うのですが、じゃあ「int
main(void)」のところが間違ってるのでしょうか。（ちなみに私は、最初「int a;
a=myabs1();」のところを書いていなかったので、そこを付け足したのですが、それでもエラーが出てしまいました。なので、a=myabs1(x)としたのですが、それでもだめでした。）

```

    int myabs1(int x)
    {
        int abs;
        if(x>=0){
            abs=x;
        }else{
            abs=-x;
        }
        return abs;
    }
    
    int main(void)
    {
        int a;
    　　a=myabs1();
        printf("xの値は: \n");
        printf("abs=%d",a);
    
        return 0;
    }
    
```
CC BY-SA 4.0
2020-04-21T11:50:49.237
65821
2020-04-22T04:17:39.023
2020-04-21T11:52:35.263
3060
36412
question
c
C言語での絶対値の定義
> int myabs1(int x)
>
> a=myabs1();

myabs1関数はint型の引数を一つ取りますが、それを使用しているところでは、引数がありません。

* * *

> a=myabs1(x)としたのですが、それでもだめでした。

エラーメッセージをきちんと読もう。  
英語だからわからんってことなら、翻訳サイトもあります
CC BY-SA 4.0
2020-04-21T14:54:33.317
65827
2020-04-22T04:17:39.023
2020-06-17T08:14:45.997
-1
27481
65821
answer
[c](/questions/tagged/c "'c' のタグが付いた質問を表示") では、自作関数 `myabs1(int)`
を作っても正しく呼ばないと実行されません。あなたの作った `myabs1` は `int` の引数を１つ取る仕様になっているので

```

    int a = -3;
    int b = myabs1(a);
    printf("a=%d b=%d\n", a, b);
    
```

のように呼ぶ必要があります。 `int myabs1(int x) { ... }` の `x` は [c](/questions/tagged/c
"'c' のタグが付いた質問を表示") の専門用語で仮引数と呼ばれる代物で、その名前の変数は `myabs1` の中にしかありません (`main` 中に
`x` という変数は存在せず、この `x` に相当する値を `main` から `myabs1` に与える必要があります)

# `myabs1(-2147483648)` は誤動作します・・・
CC BY-SA 4.0
2020-04-22T02:06:51.050
65836
2020-04-22T02:32:05.197
2020-04-22T02:32:05.197
8589
8589
65821
answer