【C语言转义字符、数据类型和操作符】

文章目录

  • 1.转义字符
  • 2.数据类型介绍
    • 2.1内置数据类型
    • 2.2sizeof操作符
      • 2.2.1sizeof中表达式不计算
  • 3.signed和unsigned
  • 4.变量
  • 5.操作符
    • 5.1算术操作符
    • 5.2赋值操作符
    • 5.3单目操作符
    • 5.4强制类型转换

在这里插入图片描述

1.转义字符

转义字符:顾名思义就是转变意思的字符。

  • \? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,但在新的编译器上没法验证了。

    三字母词 对应的字符
    ??= #
    ??( [
    ??) ]
    ??< {
    ??> }
    ??! /
    ??! |
    ??’ ^
    ??- ~
  • \ ’ :⽤于表示字符常量 '。

  • \ ":⽤于表示⼀个字符串内部的双引号 。

  • \ \ :⽤于表示⼀个反斜杠,防⽌它被解释为⼀个转义序列符。

  • \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。

  • \b :退格键,光标回退⼀个字符,但不删除字符

  • \f:换页符,光标移到下⼀页。在现代系统上,这已经反映不出来了,行为改成类似于 \v 。

  • \n :换行符。

  • \r :回车符,光标移到同⼀行的开头。

  • \ddd d d d表示1-3个八进制数。如: \130表示字符x。

  • \xdd… 表示两个十六进制数,其中d可以多于两个,但是多了没用,因为最大的ASCLL值就是127即7f

2.数据类型介绍

C语言提供了丰富的数据类型来描述生活中的各种数据。使用整型类型来描述整数,使用字符类型来描述字符,使用浮点型类型来描述小数。
所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。

2.1内置数据类型

短整型

  • 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

布尔类型,C99中引入

  • Bool ---- (true/false)
  • C语⾔原来并没有为布尔值单独设置⼀个类型,⽽是使⽤整数 0 表⽰假⾮零值表⽰真。在 C99 中也引⼊了 布尔类型 ,是专⻔表⽰真假的。

2.2sizeof操作符

sizeof 是⼀个关键字,也是操作符,专⻔是⽤来计算sizeof操作符数的类型⻓度的,单位是字节。
sizeof操作符的操作数可以是类型,也可是变量或者表达式。
如下:
sizeof( 类型 )
sizeof 表达式

sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的。
sizeof后边的表达式是不真实参与运算的,根据表达式的类型来得出⼤⼩。
sizeof 的计算结果是 size_t 类型的。( sizeof 运算符的返回值,C 语⾔只规定是⽆符号整数,并没有规定具体的类型,⽽是留给系统⾃⼰去决定, sizeof 到底返回什么类型。)
C 语⾔提供了⼀个解决⽅法,创造了⼀个类型别名 size_t ,⽤来统⼀表⽰ sizeof 的返回值类型。

【C语言转义字符、数据类型和操作符】_第1张图片

2.2.1sizeof中表达式不计算

int main()
{
	int a = 10;
	char c = 0;
	printf("%d\n", sizeof(a));
	printf("%d\n", sizeof a);//可以省略()
	printf("%d\n", sizeof(a + 10));//
	printf("%d\n", sizeof(c = a + 10));
	//sizeof中的表达式是不计算的,当a放c里面时会发生截断,最终结果由C决定

	return 0;
}

3.signed和unsigned

C 语⾔使⽤ signed 和 unsigned 关键字修饰字符型和整型类型的。

  • signed 关键字,表⽰⼀个类型带有正负号,包含负值;
  • unsigned 关键字,表⽰该类型不带有正负号,只能表示零和正整数

整数变量声明为 unsigned 的好处是,同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。

  • signed short int ( -32768~32767)
  • unsigned short int (0~65535)

字符类型

  • signed char (-127~128)
  • unsigned char (0~255)

C语言中规定:int等于signed int,但char有可能是有符号的,也可能是无符号的(取决于编译器)

4.变量

C语言规定那么多的数据类型干什么呢?----->创建变量

  • 全局变量:在大括号外部定义的变量就是全局变量。(全局变量的使用范围更广,整个工程中想使用,都是有办法使用的)
  • 局部变量:在大括号内部定义的变量就是局部变量。(局部变量的使用范围是比较局限,只能在自己所在的局部范围内使用)
  • 当局部变量和全局变量同名时,遵循局部变量优先的原则
int a = 100;
int main()
{
	int a = 10;
	printf("%d", a);//10
	return 0;
}

程序运行起来使用是要在内存中申请空间的,那局部变量和全局变量放在哪里呢?

  1. 局部变量是放在内存的栈区
  2. 全局变量是放在内存的静态区
  3. 堆区是⽤来动态内存管理的

【C语言转义字符、数据类型和操作符】_第2张图片

5.操作符

5.1算术操作符

  1. 加法:+
  2. 减法:-
  3. 乘法:*
  4. 除法:/
    除号两端如果是整数,则执行的是整数除法,得到的结果也是整数。
    如果想得到浮点数的结果,则需要操作符两端至少有一个是浮点数
int main()
{
	float a1 = 6 / 4;  //1.000000
	int b1 = 6 / 4;	   //1
	float a2 = 6.0 / 4;//1.500000
	int b2 = 6.0 / 4;  //1.500000
	printf("%f\n", a1);
	printf("%d\n", b1);
	printf("%f\n", a2);
	printf("%f\n", a2);

	return 0;
}
  1. 取余:%
    • 运算符 % 表⽰求模运算,即返回两个整数相除的余值。这个运算符只能⽤于整数,不能⽤于浮点数
    • 负数求模的规则是,结果的正负号由第⼀个运算数的正负号决定
#include 
int main()
{
 	printf("%d\n", 11 % -5); // 1
	printf("%d\n",-11 % -5); // -1
 	printf("%d\n",-11 % 5); // -1
 	return 0;
}

5.2赋值操作符

  1. 在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值。
int a =  10;//初始化
a = 20;//赋值
  1. 连续赋值
int a = 2;
int b = 3;
int c = 4;
c = b = a+3;//不建议这样写
  1. 复合赋值
int a = 5;
a + = 3// <==>  a = a + 3

C语言中还有以下复合赋值操作符

+= 		-=
*= 		/= 		%=
>>=     <<=
&= 		|= 		^=

5.3单目操作符

C语⾔中还有⼀些操作符只有⼀个操作数,被称单目操作符。

	1. 后置++、后置--(先使用,后加减)  //a++,a--
	2. 前置++、前置--(先加减、再使用)  //++a,--a
	3. 正负号

5.4强制类型转换

当我们遇到两边类型不一致的数据是,会用到强制类型转换。
强制类型转换只取整数部分,如下:

int a = 3.14;

//a的是int类型, 3.14是double类型,两边的类型不⼀致,编译器会报警告
//为了消除这个警告,我们可以使用强制类型转换

int a = (int)3.14;
//意思是将3.14强制类型转换为int类型,这种强制类型转换只取整数部分

俗话说,强扭的瓜不甜,我们使用强制类型转换都是万不得已的时候使用,如果不需要强制类型转化就能实现代码,这样自然更好。

你可能感兴趣的:(C_language,c语言,开发语言)