ホームページ > よくある問題 > C言語のルート演算子とは何ですか?

C言語のルート演算子とは何ですか?

青灯夜游
リリース: 2023-03-06 14:39:26
オリジナル
40392 人が閲覧しました

C 言語にはルート演算子はなく、ルートを開くには組み込み関数 "sqrt()" が使用され、構文 "sqrt (値 x)" が使用されます。たとえば、次のようになります。 "sqrt(4)"、4 に対して平方根演算を実行するだけで、結果は 2 になります。 sqrt() は C 言語の組み込みルート演算関数であり、その演算結果は関数変数の算術平方根であり、この関数は負の値を演算したり、虚数の結果を出力したりすることはできません。

C言語のルート演算子とは何ですか?

このチュートリアルの動作環境: Windows7 システム、C99 バージョン、Dell G3 コンピューター。

C言語にはルート演算子が存在せず、ルートを開くには組み込み関数「sqrt()」が使用されます。

C 言語の sqrt() 関数

C 言語では、sqrt は平方根関数を意味し、次の平方根を計算します。負でない実数。

sqrt()はC言語の組み込みルート演算関数であり、演算結果は関数変数の算術平方根となります。

sqrt() 関数は、負の値を操作したり、虚数の結果を出力したりすることはできません。

構文:

double sqrt(double x)
ログイン後にコピー

戻り値:

  • ##この関数は、x の平方根を返します。

sqrt() 関数の使用法

ヘッダー ファイルに #include を追加してから sqrt を使用します。二重定義

#include<math.h>
#include<stdio.h>
 
int main(void)
{
    printf("%lf",sqrt(4));
 
    return 0;
}
ログイン後にコピー

ルート番号 4 の結果は 2 であることがわかっており、出力結果も 2 になるはずです。実際の出力結果が理想的な出力結果と一致しているかどうかを確認してみましょう。

出力結果:

2.000000
ログイン後にコピー

質問:

Q1: "sqrt関数の引数の型が倍精度浮動小数点型ではないでしょうか?なぜ上に記載されているのでしょうか? この例では、sqrt 関数のパラメーターは整数ですが、浮動小数点数ではありませんか? このようにパラメーターを渡すと問題はありますか? "

R1: それこの質問を提起した読者のために、ここでこの質問に答える必要があります: 「sqrt 関数が浮動小数点数を渡すのは完全に正しいことであり、何も問題はありません。もちろん、整数を渡すことには問題はありません」 sqrt 関数内で整数変数を渡すと、自動的に倍精度浮動小数点型に変換されるため、パラメータを整数から倍精度浮動小数点に変換するプロセスを回避する方法はありますか? もちろんですが、上記のコードに小さな変更を加える必要があります:

#include<math.h>
#include<stdio.h>
 
int main(void)
{
    printf("%lf",sqrt(4.0));
 
    return 0;
}
ログイン後にコピー
ログイン後にコピー

このような変更により、パラメータが整数になるのを回避でき、浮動小数点型への変換プロセスが実行され、コードがより正確になります。 Q2: 「printf 関数の最初のパラメータは奇妙な文字列 ("%lf") です。これはなぜおかしいのでしょうか? 文字列が出力されません?これは数字に置き換えられました。」

R2: これはとても良い質問です。これが単なる奇妙な文字列であると考えるだけなら、それは正しいように思えます。なぜなら、それが最初の連絡先であれば、必然的に奇妙に感じますが、これはごく普通のことです。しかし、「%lf」は奇妙な文字列ではなく、プレースホルダです。私たちが毎日 C プログラムを書くときに、これなしではほとんどやっていけません。次のように理解できます。「printf は 'フォーマットされた出力です」 ' ' は、このプレースホルダーを「フォーマットされた出力」の「フォーマットされた」ものとして理解でき、プレースホルダーの内容に従って後続のパラメーターを出力できます。たとえば、同じ printf 関数の下で、最初のプレースホルダー文字の出力は次のようになります。 2 番目のパラメータの内容、2 番目のプレースホルダは 3 番目のパラメータの内容を出力、というようになります。プレースホルダであるかどうかを区別する方法も非常に簡単で、文字列の先頭を見て「%」(パーセント記号) かどうかを確認します。 ) が表示されていれば、これはプレースホルダであることを意味します。そうでない場合は、プレースホルダではないことを示します。C 言語では、プレースホルダは "%lf" だけでなく、多くのプレースホルダがあります。次の表は、 C言語でよく使われるプレースホルダー 各プレースホルダーに対応する入出力形式が異なります

%d整数形式での入出力単精度浮動小数点の形式での入出力#%lf倍精度浮動小数点形式での入出力 #%s文字列形式での入出力 入出力形式
#%f

讨论:

为了使读者更好地理解,我们可以对上例的代码进行一个粗略的翻译(这里作者将上例的代码“搬运”到了下面当中,这样做的原因是为了避免读者回看上文)。

#include<math.h>
#include<stdio.h>
 
int main(void)
{
    printf("%lf",sqrt(4.0));
 
    return 0;
}
ログイン後にコピー
ログイン後にコピー

翻译:在程序中先包含两个头文件,它们分别是:math.h(数学头文件)与stdio.h(标准输入输出头文件)。随后我们需要编写main函数,”main“函数的数据类型是int,参数的数据类型是“void”。为什么要编写“main”这个函数呢?因为它是整个C程序的入口,在main函数的函数体内有两条语句,第一条是“printf("%lf",sqrt(4.0));”,它翻译过来的意思是:“以双精度浮点型的形式对sqrt函数的返回值进行输出(注意:当一个函数作为另一个函数的参数时,程序会先将一个函数的返回值计算出来随后再传递给另一个函数的参数)。”最后一条语句是“return 0;”,函数是必须需要一个返回值的,但void类型除外,我们的这个main函数的数据类型是int,并不是void,所以main函数需要一个返回值,虽然在多数编译器是省略main函数的返回值的,但即便如此,最好将返回值加上,这是个良好的习惯!。

(注意:不要将main函数的参数列表中的void看成是main函数的数据类型)

【相关推荐:C语言视频教程编程教学

以上がC言語のルート演算子とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート