C言語学習2日目:C言語のデータ型と変数(後編)

目次:

        1. 変数の導入と格納

        2. 算術演算子、代入演算子、単項演算子

        3.scanfとprintfの紹介

1. 変数の導入と格納

    1.1.変数の作成

      型とは何か、型は変数の作成に使用されます。

      変数とは何ですか? C言語では、頻繁に変化しない量を定数、頻繁に変化する量を変数と呼びます。

      変数はどのように作成されるのでしょうか? 以下に例を示します。

data_type   name;
//数据类型  变量名;
int age; // 整数変数
char ch; // 文字変数
double Weight; // 浮動小数点変数

     変数を作成するときは、初期値を与える必要があります。このプロセスは初期化と呼ばれます。次のように:

// 初始化
int age = 18;
char ch = 'D';
double weight = 70.5;
unsigned int height 100;

   1.2. 変数の分類

       グローバル変数、ローカル変数に分けられます。

        グローバル変数: 中括弧の外側で定義された変数はグローバル変数です。グローバル変数はより広い範囲で使用されます。

                          プロジェクト全体で使用したい場合は、それを使用する方法があります。

       ローカル変数: 中括弧内で定義された変数はローカル変数です。

                      ローカル変数の使用範囲は比較的制限されており、ローカル変数が配置されているローカル スコープ内でのみ使用できます。

         コードデモ:

#include <stdio.h>

int global = 2023; // 全局变量

int main()
{
    int locol = 2018; // 局部变量
    printf("%d\n", locol);
    printf("%d\n", global);
    return 0;
}

   1.2.1. 変数の名前に注意する

        グローバル変数が n として定義されており、ローカル変数にも n という名前の変数が定義されている場合、処理ではローカル変数の n の値が最初に使用されます。ここで注意が必要です。次のコードは次のことを示しています。

#include <stdio.h>

int n = 1;

int main()
{
    int n = 2;
    printf("%d\n", n); // 这里打印出来的值应是2,所以变量名命名的时候需要注意。
    return 0;
}

  1.3. グローバル変数とローカル変数はメモリのどこに保存されますか?

        C/C++言語を学習する場合、スタック領域、ヒープ領域、静的領域の3つの領域に焦点を当てます。

        1. ローカル変数はメモリのスタック領域に配置されます。

        2. グローバル変数はメモリの静的領域に配置されます。

        3. ヒープ領域はメモリを動的に管理するために使用されます

       以下に示すように:

2. 算術演算子、代入演算子、単項演算子

    算術演算子 (演算子): +、-、*、/、%

    代入演算子: =、+=、-=、*=、/=、%=、>>=、<<=、&=、|=、^=

    単項演算子: ++、--、+、-

   2.1. 算術演算子のコードは次のように示されます。

// 算术操作符
// +、-、*、/、%
int main()
{
	int a = 1;
	int b = 2;
	int c = 3;
	int d = 4;
	int e = 6;
	float f = 7.1;
	printf("%d\n", a + b);
	printf("%d\n", b - a);
	printf("%d\n", b * c);
	printf("%d\n",e / d); // 于C语⾔⾥⾯的整数除法是整除,只会返回整数部分,丢弃⼩数部分。
	printf("%f\n", e / f); // 浮点数的除,返回就不会丢弃小数部分。
	printf("%d\n", e % d); // 运算符 %,即返回两个整数相除的余值。这个运算符只能⽤于整数,不能⽤于浮点数。
	// 负数取模的情况:
	// 由一下得出 第⼀个运算数的正负号决定了结果的正负号
	printf("%d\n",11 % 5);  // 1
	printf("%d\n", -11 % -5); // -1
	printf("%d\n", -11 % 5); // -1
	
	return 0;
}

   操作結果:

  2.2.代入演算子

   変数の作成時に初期値を与えることを初期化といい、変数の作成後に別の値を与えることを代入といいます。

int a = 0; // 初始化
a = 200; // 赋值

   代入演算子 [=] は、いつでも変数に値を代入できる演算子です。

   2.2.1 連続代入

             次のように:

int a = 3;
int b = 4;
int c = 5;
c = b = a + 3; // 虽然C语言支持这样写,但是不方便阅读代码,建议拆开进行写


int a = 3;
int b = 4;
int c = 5;
b = a + 3;
c = b;

   2.2.2. 複合代入演算子

        コードを記述するとき、次のコードに示すように、数値に対してインクリメントおよびデクリメント操作を実行することがよくあります。

int a = 10;
a = a + 3;
a = a - 2;

        C 言語では、次のように、このようなコードを記述するためのより便利な方法が提供されます。

int a = 10;
a += 3;
a -= 2;  // 还有更多的复合赋值符,上面我也列出来了,都可以去尝试一下。

   2.3. 単項演算子

        ++、--、+ (正)、- (負) は単項演算子です。

         2.3.1.++ および --

         ++ は、前置 ++ と後置 ++ に分かれる自己増加演算子で、 -- も前置 -- と後置 -- に分かれる自己減少演算子です。

        2.3.2. プレフィックス++

int a = 10;
int b = ++a; // ++的操作数是a,是放在a前面的,就是前置 ++
printf("%d\n", b);

// 计算⼝诀:先+1,后使⽤;
// a原来是10,先+1,后a变成了11,再使⽤就是赋值给b,b得到的也是11,所以计算技术后,a和b都是11.
int a = 10;
a = a+1;
b = a;
printf("a=%d b=%d\n",a , b);

     2.3.3.Post++

int a = 10;
int b = a++;//++的操作数是a,是放在a的后⾯的,就是后置++
printf("a=%d b=%d\n",a , b);

// 计算⼝诀:先使⽤,后+1
// a原来是10,先使⽤,就是先赋值给b,b得到了10,然后再+1,然后a变成了11,所以直接结束后a是
11,b是10
int a = 10;
int b = a;
a = a+1;
printf("a=%d b=%d\n",a , b);

     2.3.4. プレフィックス-- 

// 如果你懂了前面我写的前置++,那前置--是同理的,只是把加1,换成了减1;
// 计算⼝诀:先-1,后使⽤
int a = 10;
int b = --a; // --的操作数是a,是放在a的前⾯的,就是前置--
printf("a=%d b=%d\n",a , b);//输出的结果是:9 9

     2.3.5.事後--

// 同理后置--类似于后置++,只是把加一换成了减一
// 计算⼝诀:先使⽤,后-1
int a = 10;
int b = a--; // --的操作数是a,是放在a的后⾯的,就是后置--
printf("a=%d b=%d\n",a , b);//输出的结果是:9 10

     2.3.6.+ と -

        ここで、+ は正の符号、- は負の符号で、どちらも単項演算子です。

        演算子 + は正負の値に影響を与えず、完全に省略できる演算子です。

        しかし、それを書いてもエラーは報告されません。

    int a = +10; は int a = 10; と同等です。

       演算子 - は、値の符号を変更するために使用されます。負の数の前に - を追加すると、正の数が得られます。正の数の前に - を追加すると、負の数が得られます。

int a = 10;
int b = -a;
int c = -10;
printf("b=%d c=%d\n", b, c); // 这⾥的b和c都是-10
int a = -10;
int b = -a;
printf("b=%d\n", b);  // 这⾥的b是10

3.scanfとprintfの紹介

    3.1.printf

        基本的な使用法: printf() の機能は、パラメーターのテキストを画面に出力することです。名前の f は format を表し、出力テキストの形式をカスタマイズできることを意味します。

#include <stdio.h>

int main(void)
{
 printf("Hello World"); // 会在屏幕输出 Hello World
 return 0;
}

   3.1. printf 出力後の行を折り返すにはどうすればよいですか?

        printf() は、行末に改行文字を自動的に追加しません。

        カーソルは出力の末尾に留まり、自動的に折り返されません。

        カーソルを次の行の先頭に移動するには、出力テキストの末尾に改行文字 \n を追加します。

#include <stdio.h>
int main(void)
{
 printf("Hello World\n");
 return 0;
}

        テキスト内に改行がある場合は、次のコードに示すように、改行文字を挿入することによっても改行が行われます。

#include <stdio.h>
int main(void)
{
 printf("Hello\nWorld\n");

 printf("Hello\n");
 printf("World\n");
 return 0;
}

        printf()は標準ライブラリのヘッダファイルstdio.hに定義されています。この関数を使用する前に、このヘッダファイルをソースコードファイルの先頭に導入する必要があります。

    3.2. スキャンフ

        変数がある場合、scanf 関数を使用して変数に値を入力できます。変数の値を画面に出力する必要がある場合は、printf 関数を使用できます。例を次に示します。

        基本的な使用法: scanf() 関数は、ユーザーのキーボード入力を読み取るために使用されます。

        プログラムがこのステートメントに到達すると、プログラムは停止し、キーボードからのユーザー入力を待ちます。

        ユーザーがデータを入力して Enter キーを押すと、scanf() はユーザーの入力を処理し、変数に保存します。

        そのプロトタイプはヘッダー stdio.h で定義されます。

        scanf() の構文は printf() と似ています。

    scanf(%d, &i);

        scanf() の最初のパラメータ %d は、ユーザー入力が整数である必要があることを示します。%d はプレースホルダー、% はプレースホルダー フラグ、d は整数を表します。2 番目のパラメータ & は、ユーザーがキーボードから入力した整数が変数 i に格納されることを示します。

        注: scanf() は値ではなくアドレスを渡すため、& 演算子は変数 (ポインター変数を除く) の前に追加する必要があります。つまり、変数 i のアドレスはユーザーが入力した値を指します。ここでの変数がポインター変数 (文字列変数など) の場合、& 演算子を追加する必要はありません。

     3.2.1.scanfの戻り値

        scanf() の戻り値は整数で、正常に読み取られた変数の数を示します。

        項目が読み取られなかった場合、または一致が失敗した場合は、0 が返されます。読み取りエラーが発生した場合、またはデータが正常に読み取られる前にファイルの終わりに達した場合は、定数 EOF が返されます。

        

         VS 環境で ctrl+z を 3 回押して入力を終了すると、r が 2 となり、2 つの値が正しく読み込まれたことがわかります。数値を 1 つも入力しない場合は、ctrl+z を 3 回押すだけで、出力 r は -1 (EOF) になります。

        3.2.2. プレースホルダー

        scanf() で一般的に使用されるプレースホルダーは次のとおりで、printf() のプレースホルダーと一致しています。

  • %c: 文字        

  • %d: 整数

  • %f:float型浮動小数点数

  • %lf: double 型浮動小数点数

  • %Lf:long double型浮動小数点数

  • %s: 文字列

  • %[]: 角括弧内に一致する文字のセットを指定します (%[0-9] など)。セットに含まれない文字が見つかった場合、一致は停止します

        注: 上記のすべてのプレースホルダーのうち、%c を除く先頭の空白文字は自動的に無視されます。%c は空白文字を無視せず、スペースであるかどうかに関係なく、常に現在の最初の文字を返します。 

おすすめ

転載: blog.csdn.net/m0_58724783/article/details/131946688