接上一篇 自学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————————————————