C言語の救世主(ゼロベースのエントリC言語--1)

コンテンツ

1.労働者が良いことをしたいのなら、彼は最初に彼の道具を研ぐ必要があります

2.最初のコードを書く

 新しいプロジェクトを作成する>>

3.データ型

4.変数の分類

2つの整数の加算を完了するコードを記述します

5.関数のライフサイクル

もう1つの質問

6.文字列の長さを見つけます

配列の終了マークは「\0」です。次のプログラムは特定の\0位置を指定しないため、出力はランダムな値になります。

 7.16進変換

1.10進数から2進数

8.オペレーター

 次のコードを実行した結果はどうなりますか?

9.宿題


1.労働者が良いことをしたいのなら、彼は最初に彼の道具を研ぐ必要があります

C言語をコンパイルするにはどのようなツールが必要ですか?

VS 2022(ブログの説明はVS2019に基づいています)ダウンロードVisual Studio Tools-Windows、Mac、Linux用の無料インストール

 ・Qt Creator(プラットフォーム間でインストールして実行できます。オープンソース)  / archive / qtのインデックス(以下は、他のブロガーが共有するQtの使用法のチュートリアルです。


2.最初のコードを書く

 新しいプロジェクトを作成する>>

 パスと名前を設定すると、ここにいることがわかります

ソースファイルを右クリックして、次の手順を実行します

 

 注:  ;separateはステートメントです

//写C语言代码,首先要写出主函数  两个//代表注释,在写代码的时候经常使用注释可以帮助我们很好的理解代码



#include <stdio.h>         //库函数的使用,得包含对应的头文件

int main()                 //主函数,是程序的入口,主函数有且仅有一个
{
	printf("Hello,World"); //printf是C语言提供的打印库函数

	return 0;
}


//这时候按Ctrl+F5,程序就会运行起来



3.データ型

sizeofは、型のサイズを計算するために使用されます

 
 

%d-整数を出力します%s-文字列を出力します%c-文字を出力します%uは符号なし整数を出力します

int main()
{
	
	printf("%u\n", sizeof(char));//1个字节,代表char类型8个bit位
	printf("%u\n", sizeof(short));//2个字节,代表short类型16个bit位
	printf("%u\n", sizeof(int));//4个字节,代表in类型32个bit位
	printf("%u\n", sizeof(long));//4个字节,代表long类型32个bit位
	printf("%u\n", sizeof(long long));//8个字节,代表long long类型有64个bit位
	printf("%u\n", sizeof(float));//4个字节,代表float类型有32个bit位
	printf("%u\n", sizeof(double));//8个字节,代表double类型有64个bit位


	return 0;
}


4.変数の分類

int b = 1000;//全局变量 - 定义在大括号的外部

int a = 1000;

int main()
{
	int a = 100;//局部变量 - 定义在大括号的内部
	//局部变量的名字和全局变量的名字冲突的情况下,局部优先

	printf("a = %d\n", a);

	return 0;
}

この時点で、aの結果は100です。

知らせ:

 1. scanf関数、フォーマット入力関数、つまり、ユーザーが指定したフォーマットに従って、キーボードから指定された変数にデータを入力します。

 2.(#define _CRT_SECURE_NO_WARNINGS 1は、scanf関数の戻り値を無視するため、scanf関数がエラーを報告しないようにするためのものです)

2つの整数の加算を完了するコードを記述します

#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS 1  

int main()
{
	int num1 = 0;//初始化一个变量,num1仅仅是我们自定义的一个变量名
	int num2 = 0;//
	int sum = 0;//存放加法的结果
	//输入
	scanf("%d %d", &num1, &num2);//&下节课会讲
    //目前可以理解为num1,num2两个变量给输入函数用来存放.

	//相加
	sum = num1 + num2;

	//输出
	printf("%d\n", sum);

	return 0;
}


//下面写成函数的写法



int Add(int x, int y)
{
	int z = 0;
	z = x + y;
	return z;
}

int main()
{
	int num1 = 0;
	int num2 = 0;
	int sum = 0;
	scanf("%d %d", &num1, &num2);
	//求和
	//sum = num1 + num2;
	sum = Add(num1, num2);

	printf("%d\n", sum);

	return 0;

5.関数のライフサイクル

一般に、プログラムコードの一部で使用される名前は、常に有効/使用可能であるとは限りません。名前の使用可能性を修飾するコードの範囲は、名前の範囲です。

1.ローカル変数のスコープは、変数が配置されているローカルスコープです。

2.グローバル変数のスコープは、プロジェクト変数全体のライフサイクルであり、変数の作成から変数の破棄までの期間を指します。

3.ローカル変数のライフサイクルは次のとおりです。スコープのライフサイクルに入ると、スコープのライフサイクルが開始および終了します。

4.グローバル変数のライフサイクルは次のとおりです。プログラム全体のライフサイクル。

#include <stdio.h>

int main()
{
	{
		int a = 100;
		printf("%d\n", a);
	}
	printf("%d\n", a);//此时程序报错,a已经在{}局部变量执行完毕销毁了


	return 0;
}

ライフサイクルを延長するためのローカル変数の静的変更

理解する:

 1.whileはループですが、ワイド番号()の内側は、ループが継続するかどうかを判断するためのものです。0以外は継続する場合はtrue、0はループから飛び出す場合はfalseです。

2.test()、testは自分で作成した関数です。実行とは、実行する関数を入力して、戻ることを意味します。

#include <stdio.h>



void test()
{
  static int a = 1;
//.static修饰全部变量(或者函数),改变了作用域,让静态的全局变量只能在自己的源文件内部使用
//外部文件用extern就无法调用了,会提示无法解析外部符号
  a++;
  printf("a=%d\n",a);
}

int main()
{
	int i = 0;
    while(i<5)
   {
     test();
     i++;

   }

	return 0;
}

結果は23456です(aは破棄されません)


もう1つの質問

 結果は


6.文字列の長さを見つけます

#include <stdio.h>


strlen - 库函数
求字符串的长度
#include <string.h>

int main()
{
	char arr1[] = "abc";
	char arr2[] = { 'a', 'b', 'c', '\0'};

	printf("%d\n", strlen(arr1));//3
	printf("%d\n", strlen(arr2));//3

	/*printf("%s\n", arr1);
	printf("%s\n", arr2);*/

	return 0;
}

 注:この時点でarr2配列の\ 0を削除すると、結果は異なります。

配列の終了マークは「\0」です。次のプログラムは特定の\0位置を指定しないため、出力はランダムな値になります。

strlenは文字列の有効な長さを取得するためのものであり、末尾の「\0」はカウントされません。

strlenによって取得されるルールは非常に単純です。「\0」に遭遇するまで前から後ろにチェックしてから、検出を終了します。
 


 7.16進変換

1.10進数から2進数

 2による10進数の無限除算、結果の余りは1または0のいずれかであり、最後の除算が1になった後、除算された1からの次数を加算します。

同様に、00001010などの2進数から10進数では、右端の0は2の0乗を表し、1は2の1乗を表し、0は2の2の累乗を表し、1は2の3乗を表します。結果は10です(初心者ベース変換-オンラインツール)

 文字の「130」は、8進数の130を10進数に変換して得られた88を表し、文字「X」はASCIIコード値で表されます。


8.オペレーター

 

int main()
{
	int a = 0;//初始化
	//
	a = 20;//赋值
	//a = a + 10;
	a += 10;//复合赋值符

	a -= 15;//  换个意思是a=a-15
	printf("a=%d\n", a);//a的结果是15
	return 0;
}



int main()
{
	//printf("%d\n", 7 / 3);//2....1
	//printf("%f\n", 7 / 3.0);

	printf("%d\n", 7 % 3);//2...1

	return 0;
}

 次のコードを実行した結果はどうなりますか?

#include <stdio.h>



int main()
{

  int a = 0;
  printf("%d",~a);//逻辑反操作符

	return 0;
}

//结果是-1

モジュロ測定システムでは、数値の減算はその補数の加算に等しいため、負の数はコンピューターの補数で表されます。これにより、減算演算を加算演算に変換する目的が実現されます。(クロック調整時間と同様に、加算または減算できます)
整数である限り、補数はメモリに格納されます。
正の数の補数、ソースコード、および逆コードは同じです。
負の数をカウントする必要があります。逆コードを取得するには、ソースコードを反転します(符号ビットは最初のビットを反転しないでください)。次に、逆コード+1が取得され、補数コードが取得されます。

 

数学のand(&&)、または(||)のように、a && bのいずれかが0の場合、結果は0になり、a || bのいずれかがゼロ以外の場合、結果はtrueになります()


9.宿題

毎日のトレーニングは必須です!これは、初心者が質問をするために推奨されるWebサイトプログラミング言語の初心者向けトレーニングキャンプです。

トピック名:

2つの数値のうち大きい方を見つける

トピックの内容:

2つの整数のうち大きい方を見つける関数を記述します

そのような:

入力: 10 20

出力最大値: 20

おすすめ

転載: blog.csdn.net/weixin_63543274/article/details/122690390