C言語の救世主(キーワード-2)

コンテンツ

1.ストリング

次のコードの結果は次のとおりです。()

2.キーワード

1. C言語のキーワード:C言語によって定義され、特定の意味を持ち、特別な目的に特化したC言語の識別子。予約語とも呼ばれます。

演習1.2つの数値のサイズを決定します

演習2.合計スコアと平均スコアの計算

演習3.4桁の数値を逆出力します

  静的に変更されたローカル変数


1.ストリング

C言語仕様:有効な文字列の終了マーカーとして「\0」を使用します

配列の添え字は0から始まります。

#include <stdio.h>
#include <string.h>
int main()
{
    printf("%d\n", strlen("c:\test\121"))
    return 0;
}

strlen:'\0'を除く文字列の有効な長さを取得します

"c:\ test \ 121":この文字列では、\ tは遷移文字であり、水平方向にタブ移動し、次のタブ位置にジャンプします。\ 121は文字を意味します。つまり、121は8進配列と見なされます。 10進数で81に変換すると、ジョブはASCIIコード値の文字、つまり文字「Q」であるため、上記の文字列は実際には「c esty」であり、有効な文字は7文字のみです。

'\n'改行を表すエスケープ文字

'\ 060'エスケープ文字、060 8進数データ、10進数48は、ASCIIコードが48の'0'を意味します

'\ b'エスケープ文字、バックスペースを意味します


次のコードの結果は次のとおりです。()

#include <stdio.h>
#include <string.h>

int main()
{
    char arr[] = {'b', 'i', 't'};
    printf("%d\n", strlen(arr));
	return 0;
}

strlenは文字列の有効長を取得するために使用され、終了マーカー「\0」は含まれません。

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

上半身では、arrは文字配列であり、背後に'\ 0'がないため、有効な文字列ではありません。したがって、strlenが解決しているとき、有効な文字を検出した後、'\0に遭遇するまで逆方向にチェックを続けます。 'は終了するだけなので、答えは不確定です。't'の直後の最初の'\0'がどこにあるかによって異なります。

2.キーワード

1. C言語のキーワード:C言語によって定義され、特定の意味を持ち、特別な目的に特化したC言語の識別子。予約語とも呼ばれます。

キーワードには特別な意味があり、変数名として使用することはできません

(defineがキーワードではない場合、コンパイラーによって実装され、C言語のコンテンツではなく、マクロ前処理命令を定義するために使用されます。)


用在switch语言中的关键字不包含哪个?



  A.continue
  B.break
  C.default
  D.case
  
  答案是A

  switch是用来进行多分支选择的语句,一般结构是:

  switch(变量表达式)

  {

    case xx1:

     // ...

     break;

    case xx2

     // ...

     break;

    default:

      // ...

  }

  

当变量表达式的内容与某个case后的常量相等后,就执行该case下的语句
break表示该case以后的内容不会执行,如果没有跟break,会继续执行当前case之后的case分支。

当变量表达式的内容没有与那个case匹配,就会执行default下的内容。

switch中常用的关键字:case 、break、 default,当然case中语句比较复杂时,可能会用if进行判断。

continue是用来结束本次循环的,而switch不是循环,因此其中不能使用continue关键字。

演習1.2つの数値のサイズを決定します

#include <stdio.h>
int main()
{
    int a, b;
    while (scanf("%d%d", &a, &b) != EOF)
    {
        if (a > b)
            printf("%d>%d\n", a, b);
        else if (a < b)
            printf("%d<%d\n", a, b);
        else
            printf("%d=%d\n", a, b);
    }
    return 0;
}

演習2.合計スコアと平均スコアの計算

%3.2fは

%m.nf
m-出力データの全長を決定します。[整数+小数点+1小数点]出力データの全長で出力長が指定されていない場合は、左側がスペースで埋められます。データの側。出力の長さ以上の場合は使用されません。

n-小数点出力の桁数を決定し、最後の桁に丸めます。データの小数点以下の桁数が指定された桁数より少ない場合は、最後に0を追加します。

int main()
{
    float a=0;
    float b=0;
    float c=0;
    scanf("%f %f %f",&a,&b,&c);
    float ret=a+b+c;
    float Average=(a+b+c)/3;
    printf("%3.2f ",ret);
    printf("%3.2f",Average);
    
     
    return 0;
}

演習3.4桁の数値を逆出力します

たとえば、n = 1234、最初の1234%10 = 4、nを10 = 123で割った値。123%10 = 3、123を10=12で割った値。

ループはn=0まで続き、ループは終了して4 321を出力します。

#include <stdio.h>
void Nixu(int n)
{
    while(n)
    {
    printf("%d",n%10);
    n/=10;
    }
   
}
int main()
{
    int n=0;
    scanf("%d",&n);
    Nixu(n);
    return 0;
}

C言語では、0は偽を意味し、0以外は真を意味します

//#define 定义常量

#define MAX 1000

#define STR "hello bit"

int main()
{
	int m = MAX;
	printf("%d\n", m);
	printf("%s\n", STR);
	return 0;
}

静的に変更されたローカル変数



void test()
{
	static int a = 5;
	a++;
	printf("%d ", a);
}

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

	return 0;
}


static修饰局部变量,延长生命周期

staticがローカル変数を変更すると、ローカル変数はローカルスコープ外の静的ローカル変数になり、破棄されません

次に関数を入力するとき、次の理由で関数がまだ存在します。静的に変更されたローカル変数が静的領域に格納された静的に変更されたローカル変数である場合、実際に変更されるのは変数の格納場所です。

元々、ローカル変数はスタック領域に配置されていましたが、静的に変更された後、静的領域に配置されていました。その結果、範囲外がまだ存在し、ライフサイクルは終了しません。

おすすめ

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