基礎ゼロから C 言語を学習 (一般的な演算子とキーワードを克服)

1. オペレーター

1. 算術演算子

2. 代入演算子

3. 単項演算子

4. 関係演算子と論理演算子

5. 条件式とカンマ式

2. キーワード

1. よくあるキーワード

2. キーワード静的

(1) ローカル変数を変更する

3. キーワード登録

3. その他の注意点

1. 前処理ディレクティブ #define (define はキーワードではありません)

(1)defineは識別子定数を定義します

2. const 定数

—————————————————————————————————————————
1. 演算子
1. 算術演算子:

オペレーター シンボル
プラス +
マイナス記号 -
乗算記号 *
区切り記号 /
モジュロ (剰余) %


1. C言語の演算規則もほぼ同様であり、被除数に0は使用できません。
2. 剰余を取得する場合、整数定数または変数のみを使用できます。それ以外の場合は、コンパイラによってエラーが報告されます。
3. 除算を実行するときに、結果に小数点以下の桁が必要な場合は、除算記号の左端と右端の少なくとも 1 つに小数が含まれます (例: )。データ型は float または double のみであり、出力時に出力に または を使用3/4.0ます%f。 。%lf

2. 代入演算子

オペレーター シンボル
割り当て =
加算的な割り当て +=
減算の代入 -=
乗算の代入 *=
部門の割り当て /=
#include<stdio.h>
int main()
{
    
    
	int a=0;
	a+=1;
	a=a+1;
	//上方两个语句的意思是相同的,都是将a加上1后再赋值给a,之后a的结果变为1。
	//只不过第一个语句更加简便。
	a*=2;
	a=a*2//同理
	return 0;
}	

注:
=C 言語での意味は代入であり、数学での判定が等しいかどうかではありません。C 言語での等しい判定の記号は であり==、明確に区別する必要があります。

3. 単項演算子

シンボル 意味
+ 正の値
- 負の値
論理反転
& 住所を取る
のサイズ 演算子の型の長さ
デクリメント
++ 自動増加
() キャスト

注:
1. ここでの + と - は符号ビットであり、計算には使用されません。
2. sizeof は関数ではありません。演算子とキーワードの両方です。データ型の長さを求める場合は、かっこを追加する必要があります。これは文法上の要件です。
3. ++ と – (表と裏の両方)。などの前置する場合は、++aまず変数 a の値に 1 を加えてから、変数 a の値を使用します。後置する場合、たとえば、a++最初に変数 a の値を使用してから、変数 a の値に 1 を加えます。また、自己インクリメントおよび自己デクリメントのシンボルは、1 を加算または 1 を減算することしかできません。

#include<stdio.h>
int main()
{
    
    
	int a=0;
	printf("%d\n",sizeof(int));//sizeof的括号不能省略
	printf("%d\n",sizeof(a));
	//所有输出结果都为int类型——数据类型的大小为4
	return 0;
}

出力結果
最終結果を計算する次のコード部分を考えてみましょう。

#include<stdio.h>
int main()
{
    
    
	int a=0,b;
	b=a++;
	printf("%d %d",a,b);
	b=++a;
	printf("%d %d",a,b);
	return 0;
}

最初の操作後は、a=1、b=0、2 回目の操作後、a=2、b=2 となります。
ヒント: ++a が最初に使用され、a++ が後で使用されます。

4. 関係演算子と論理演算子
関係演算子:

オペレーター シンボル
未満 <
以下 <=
以上 >
以上 >=
同等 ==
等しくない !=

注:
1. 関係演算子の優先順位は算術演算子の優先順位より低くなります。関係演算子のうち、最初の 4 つの演算子は最後の 2 つの演算子よりも優先されます。 2. 関係演算子を含む演算結果は 2 つだけです: 1 (true)
または0 (偽)。したがって、関係演算の結果は整数データになります。関係が成立する場合、結果は 1 となり、関係が成立しない場合、結果は 0 になります。
3. 関係演算子の結果は整数データですが、関係演算子を使用して整数と浮動小数点数を比較したり、混合型のオペランドを比較したりすることもできます。

論理演算子:

オペレーター シンボル
&& ロジックと
|| 論理的または
論理否定

逻辑与运算的特点:仅当两个操作数都为真时结果才为真,其他情况都为假。当需要两个条件同时为真时,使用逻辑与运算符&&把两个条件连接起来。
逻辑或运算的特点:仅当两个操作数都为假时结果才为假,其他情况都为真。因此,当需要表示两个条件只要有一个成立时,可使用逻辑或来连接这两个条件。例如,判断某人的年龄属于60以上或12以下的范围,所对应的表达式为:age>60||age<12.
逻辑非运算符用于反转一个条件的值。逻辑非运算符只需要一个操作数,若操作数为真,则该逻辑表达式为假;若操作数为假,则该逻辑表达式为真。
注意:逻辑表达式的值,即逻辑运算的结果只有真和假两个值,C语言没有提供布尔类型,当运算结果为真时用1表示,为假时用0表示。但是在判断一个数值表达式(不一定是逻辑表达式)真假时,由于任意一个数值表达式的值不局限于0和1两种情况,因此根据表达式的值为0还是非0来判断其真假,如果表达式为非0(负数也可以)时为真,否则为假。
优先级:一元运算符(单目运算符)>算术运算符>关系运算符>大于逻辑运算符(!除外)>赋值运算符
注意:既是逻辑运算符又是单目运算符,所以是最高的。
当然,记不住这些优先级也不必惊慌,”将需要计算的表达式用圆括号括起来“是解决这个问题的灵丹妙药。

5.条件表达式逗号表达式
C语言提供了一种特殊的运算符,用来依据条件选择两个值中的一个。
条件表达式:

表达式 1 ? 表达式 2 : 表达式 3

以上的组合表达式称作条件表达式,这是唯一一个要求三个操作符的运算符,因此,也被称为三元运算符。

使用表达式求两个整数的最大值

#include<stdio.h>
int main()
{
    
    
	int a,b,max;
	svanf("%d %d",a,b);
	max=(a>b)?a:b;
	printf("%d\n",max);
	return 0;
}

在这其中,(a>b)?a:b是一个程序表达式,若条件(a>b)成立,则条件表达式取值a;否则,取值b。

逗号表达式:
逗号表达式就是将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。
表示方式:
(表达式1,表达式2,表达式3,… ,表达式n)
注意:
(1) 逗号表达式的运算过程为:从左往右逐个计算表达式。
(2) 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。
(3) 逗号运算符的优先级别在所有运算符中最低。

二、关键字
1.常见关键字

auto  break   case  char  const   continue  default  do   double else  enum   
extern  float  for   goto  if   int   long  register    return   short  signed
sizeof   static struct  switch  typedef union  unsigned   void  volatile  while

注意:用户不能自己创造关键字。

2.关键字static
(1)修饰局部变量

void  not()
{
    
    
	static int a=1;
	a++;
	printf("%d ",a);
}
int main()
{
    
    
	int i=0;
	while(i<10)
	{
    
    
		not();
		i++;
	}
	return 0;
}

static修饰函数中的局部变量:(局部变量存储位置由堆区移至静态区),使函数中的局部变量不会改变。
生命周期延长:该变量不会随函数的结束而结束。
初始化:只在第一次调用该函数时进行初始化。
记忆性:之后调用时,该变量使用前一次函数调用完成之后保存的值。

3.关键字register(寄存器变量)

int main()
{
    
    
	//寄存器变量
	register  int num=3;//建议将3存放在寄存器里
	return 0;
}

运行速度:寄存器>高速缓存>内存>硬盘
空间:硬盘>内存>高速缓存>寄存器
造价:寄存器>高速缓存>内存>硬盘
由于以上特性,所以不能把大量数据存放至寄存器中,只是建议将register修饰的变量存放在寄存器中。

3. その他
1. 前処理命令 #define (define はキーワードではありません)
(1) 定義マーク
#define コンパイル命令の正確な意味は、ソースコード内のすべての識別子定数を置換テキストに置き換えるようコンパイラに指示することです。

#define NUM 100;//NUM就变成100的别名
#define PI  3.1415926;//PI就是3.1415926的别名

慣例により、シンボリック定数名の文字は大文字であるため、変数名と区別しやすくなります。
マクロ定数にも独自の欠点があります。マクロ定数が置換テキストで置換されると、メモリ内に同じ置換ファイルのコピーが複数存在します。 . .

2. const 定数
const 定数は、変数定義形式に const 装飾を加えたものに似ており、その値が固定されており変更できないことをコンパイラに伝え、コンパイラはチェックと監視を支援します。

const double PI=3.1415926;

const の目的は、マクロ定数を置き換え、その欠点を解消し、その利点を継承することです。
コンパイル時、const で定義された定数は対応するメモリ アドレスのみを与えるため、プログラムの実行中に const で定義された定数のコピーは 1 つだけになります。

上記の内容はパソコン初心者が書いたものですので、間違いがあればコメント欄でご指摘いただければ、一緒にコミュニケーションや議論ができます。
私のコンテンツが好きな人が私に注目して、気に入ってくれると嬉しいです!
画像の説明を追加してください

おすすめ

転載: blog.csdn.net/z2004cx/article/details/128170943