Bootstrap

自学C语言——C语言常见概念(二)&数据类型和变量(一)

接上一篇     自学C语言——C语言常见概念(一)

#include <stdio.h>

int main()
{
char arr1[]={'a', 'b', 'c'};//arr1数组中存放三个字符 a b c
char arr2[]="abc";//arr2数组中存放字符串 a b c /0

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

return 0;
}

arr2打印结果为abc

arr1打印abc后没有\0继续打印随机值abcXXXXXXX

11.转义字符

转义字符:\0、\n......

\n换行

printf("abcdef")//abcdef
printf("abc\ndef")
//abc
  def

n不打印

常见的转义字符:

  • \?:在书写连续多个问号时使用,防止他们被解析成三字母词,在现在的编译器上无法验证,不再识别三字母词。三字母词:??)  =  ]  
  • \':用于表示字符常量
printf("%c", '\'')
  • \":用于表示一个字符串内部的双引号
printf("%s\n", "\"")
  • \\:用于表示一个反斜杠,防止他被解释为一个转义序列符
printf("C:\\test\\test.c");//输出:C:\test\test.c
  • \a:报警,这会使得终端发出报警声或出现闪烁,或者两者同时发生
printf("\a")//使电脑发生报警声
  • \b:退格键,光标回退一个字符但不删除字符
printf("abc\bdef");//输出abdef
printf("abcdef\b\b");//输出abcdef,回退两个字符
  • \f:换页符,光标移动到下一页。在现代系统上,反应不出来了,行为改成类似于\v
  • \n:换行符
  • \r:回车符。光标移动到同一行的开头
  • \t:制表符,光标移动到下一个水平制表位,通常是下一个4/8的倍数

空格类似于TAB,字符多了之后会变窄,\t为八个字符一组,对其到下组的位置

a2345678

ab345678

abc45678

  • \v:垂直分隔符,光标移到下一个垂直制表位,通常是下一行的同一列

字符的8进制或者16进制的表示形式

  • \ddd:d d d表示1~3个八进制的数字
printf("%c\n", '\130');//输出X
  • \xdd:d d表示2个十六进制数字
printf("%c\n", '\x30');//输出0

\0:null字符,代表没有内容

求字符串的长度,/0不计入
#include <stdio.h>
#include <string.h>
int main()
{
int len = strlen("abc");
printf("%d\n", len);
return 0;
}
//输出3

\t \a \ddd 算一个字符

12.语句和语句分类

分为以下五类:

  • 空语句
  • 表达式语句
  • 函数调用语句
  • 复合语句
  • 控制语句(九种)

分类:

1.条件判断语句也叫分支语句:if、switch

2.循环执行语句:do while、while、for

3.转向语句:break、goto、continue、return

C语言支持三种结构:顺序结构,选择结构,循环结构

  • int main()
    {
    printf("hehe\n");//函数调用语句,自己的也算
    ;//空语句
    3+5;//表达式语句
    return 0;
    }
    复合语句:
    {
    //一个代码块
    }

13.注释

//xxxxxx

/*xxxxxxxx*/

/*
xxxx
xxxx
*/

快捷键:

注释:ctrl+k+c

取消注释:ctrl+k+u

编译时,注释会被替换成一个空格

C语言数据类型和变量

1.数据类型介绍

使用整型类型来描述证书,使用字符类型来描述字符,使用浮点型类型来描述小数。

内置类型:

字符型

char //character
[signed]char //有符号的
unsigned char //无符号的

整型

//整数 - integer
//短整型
short [int]
[signed] short [int]
unsigned short [int]

//整型
int
[signed] [int]
unsigned [int]

//长整型
long [int]
[signed] long [int]
unsigned long [int]

//更长的整型
//C99中引入
long long [int]
[signed] long long [int]
unsigned long long [int]

浮点型

float--单精度浮点型
double--双精度浮点型
long double

布尔类型

用来表示真和假,(在以前0表示假,非零表示真,-1也是真)

_Bool = _bool
需要包含头文件<stdbool.h>
布尔类型变量取值:false、true
#define false 0
#define ture 1

自定义类型:

数组

结构体-struct

枚举-enum

联合体-union

数据类型的长度

sizeof关键字

也是一个操作符,专门用来计算操作符数的类型长度。单位是字节。

int main()
{
int a = 10;
printf("%d\n", sizeof(a ));

return 0;
}
//输出4
#include <stdbool.h>

int main()
{
printf("%d\n", sizeof(char));//输出1
printf("%d\n", sizeof(bool));//输出1
printf("%d\n", sizeof(short));//输出2
printf("%d\n", sizeof(int));//输出4
printf("%d\n", sizeof(long));//输出4
printf("%d\n", sizeof(long long));//输出8
printf("%d\n", sizeof(float));//输出4
printf("%d\n", sizeof(double));//输出8
printf("%d\n", sizeof(long double));//输出8

return 0;
}

 %zd用来打印sizeof(),%d可以运行但会警告

 sizeof(long)>=sizeof(int)

short:-32768~32767

sizeof中的表达式不计算
int main()
{
short s =5;//2字节
int b = 10;//4个字节
printf("%d\n", sizeof(s=b+1))//输出2
printf("s= %d\n", s);//输出 s = 5
}
补充

计算机中的单位:bit-比特位、Byte-字节、KB、MB、GB......

1Byte = 8bit 、1KB = 1024Byte.....

数字占一个字节,英文占一个字节,标点占一个字节,一个汉字占两个字节

变量创建的本质是内存的申请

2.signed 和 unsigned

用于修饰字符型和整型

signed关键字,表示一个类型带有正负号,包含负值。

unsigned关键字,表示该类型不带有正负号,只能表示零和正整数。

对于int类型,默认带有正负号int=signed int,un不可省略

int main()
{
int n;//signed int n
signed int m;//有符号的m--即可能有正数又可能有负数
unsigned int age;//无符号的--只可能存 0 和正数
return 0;
}

unsigned int 0~65535,同样长度的内存能够表示的最大整数大一倍

#define SHRT_MIN      (-32768)          //有符号16位整型的最小值
#define SHRT_MAX        32767           //有符号16位整型的最大值
#define USHRT_MAX      0xffff           //无符号16位整型的最小值(65535)
#define INT_MIN     (-2147483647-1)     //有符号整型的最小值
#define INT_MAX       2147483647        //有符号整型的最大值

int = signed int

signed char c;//范围为-128到127
unsigned char c;//范围为0到255

char =≠signed char,是否为signed or unsigned 取决于编译器,大部分为signed

sizeof 运算符的返回值,C语言只规定是无符号整数,并没有规定具体的类型,而是留给系统自己去决定,sizeof 到底返回什么类型。不同的系统中,返回值的类型有可能是 unsigned int,也有可能是unsigned long,甚至是 unsigned long long,对应的 printf()占位符分别是 %u、%lu
和 %llu 。这样不利于程序的可移植性。


C语言提供了一个解决方法,创造了一个类型别名 size_t,用来统一表示 sizeof 的返回值类型。对应当前系统的 sizeof 的返回值类型,可能是unsigned int,也可能是 unsigned long long 。

3.数据类型的取值范围

 limits.h 文件中说明了整型类型的取值范围。

float.h 这个头文件中说明浮点型类型的取值范围。

————————————————End————————————————

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;