C语言操作符的说明

1.算术操作符 +,-,*,/,%

算术操作符是双目操作符
操作符也被叫做运算符,意思一样

1.1 +-

+和-用来完成加法和减法
+和-都是有两个操作数的,位于操作符两段就是它们的操作数,这种操作符也叫双目操作符

int main()
{
	int a = 2;
	int b = 3;
	int c = a + b;//2+3 = 5
	int d = b - a;//3-2 = 1
	printf("%d\n", c);//5
	printf("%d\n", d);//1
	return 0;
}

1.2 *

运算符*用来完成乘法

int main()
{
	int num = 5;
	printf("%d\n", num * num);//25
	return 0;
}

1.3/

运算符/用来完成除法
除号的两端如果是整数,执行的是整数除法,得到的结果也是整数

int main()
{
	float x = 6 / 4;
	int y = 6 / 4;
	printf("%f\n", x);//1.000000
	printf("%d\n", y);//1
	return 0;
}

c语言里的整数除法是整数,只会返回整数部分,丢弃小数部分但是6/4的最终结果是1.5,那么我们想要得到1.5这个结果,就要使用浮点数除法

浮点数整除法
两个运算数至少有一个浮点数

int main()
{
	float x = 6.0 / 4;
	printf("%f\n", x);//1.500000
	return 0;
}

1.4 %

**运算符%表示求模(余)运算,即返回两个整数相除的余数,这个运算符只能用于整数,不能用于浮点数

int main()
{
	int x = 6 % 4;//6整除4后得1余2
	printf("%d\n", x);//2
	return 0;
}

1.4.1负数求模

负数求模的规则是,结果的正负号由第一个运算符的正负号决定

int main()
{
	printf("%d\n", 11 % 5);//1
	printf("%d\n", -11 % 5);//-1
	printf("%d\n", 11 % -5);//1
	return 0;
}

1.5赋值操作符:=和复合赋值

在变量创建的时候给一个初始值叫初始化,在变量创建好后,再给一个值,这叫赋值

int a = 10;//初始化
a = 20;//赋值,这里使用的=就是赋值操作符

赋值操作符=是一个随时可以给变量赋值的操作符

1.6连续赋值

赋值操作符也可以连续赋值

int main()
{
	int a = 3;
	int b = 5;
	int c = 0;
	c = b = a + 3;//连续赋值,从右向左一次赋值的
	//先把a+3赋给b 再把b赋给c
	return 0;
}

C语言虽然支持这种连续赋值,但是写出的代码不容易理解,建议还是拆开来写,这样方便观察代码的执行细节

1.7复合赋值符 += -=

写代码时,我们经常可能对一个数进行自增,自减的操作

int main()
{
	int a = 10;
	a = a + 3;
	a = a - 2;
	//可以写成
	a += 3;
	a -= 2;
	return 0;
}

c语言中的复合赋值符有:
+=, -=,*=,/=,%=,>>=,<<=,&=,|=,^=

2.单目操作符

单目操作符只有一个操作数,++,–,+(正),-(负)都是单目操作符

2.1 ++和–

++是自增操作符,又分为前置++和后置++;–是自减操作符,也分为前置–和后置–

2.1.1前置++

计算口诀,先+1,再使用

int main()
{
	int a = 10;
	int b = ++a;//前置++,先执行a+1再使用a的值
	printf("%d\n", b);//11
	return 0;
}

2.1.2后置++

计算口诀:先使用,再+1

int main()
{
	int a = 10;
	int b = a++;//后置++,先使用a的值,把10赋值给b,再a+1,a变成11
	printf("%d\n", b);//10
	return 0;
}

2.1.3前置–\

计算口诀:先使用,再-1

int main()
{
	int a = 10;
	int b = --a;//先把执行a-1,再赋值给b
	printf("%d\n", b);//9
	return 0;
}

2.1.4后置–

计算口诀:先-1,再使用

int main()
{
	int a = 10;
	int b = a--;//先把a的值10赋值给b,再执行a-1
	printf("%d\n", b);//10
	printf("%d\n", a);//9
	return 0;
}

2.2+和-

  1. 运算符+对正负值没有影响,是一个完全可以省略的运算符,但是写了也不会报错
  2. 运算符-用来改变一个值的正负号,负数的前面加上-就会得到正数,正数的前面加上-会得到负数。

3.强制类型转换

int main()
{
	//int a = 3.14;//a是int类型,3.14是double类型,两边类型不一致,编译器去报警告
	//为了消除警告,可以进行强制类型转换
	int a = (int)3.14;//将3.14强制类型转换为int类型,这种强制类型转换只取整数部分
	return 0;
}

尽量减少使用强制类型转换的代码,如果不用强制类型转换就尽量不用

4.占位符

  • %a:十六进制浮点数,字母输出为小写
  • %A:十六进制浮点数,字母输出为大写
  • %c:字符
  • %d:十进制整数。//int
  • %e:使用科学计数法的浮点数,指数部分的e为小写
  • %E:使用科学计数法的浮点数,指数部分的E为大写
  • %i:整数,基本等同于%d
  • %f:小数(包含float类型和double 类型)。//float%fdouble-%lf
  • %g:6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的e
    为小写。
  • %G:等同于%g,唯一的区别是指数部分的E为大写
  • %hd:十进制short int 类型
  • %ho:八进制short int类型
  • %hx:十六进行short int类型
  • %hu:unsigned short int 类型
  • %ld:十进制long int类型
  • %lo:八进制long int类型
  • %lx:十六进制long int类型
  • %lu:unsigned long int类型
  • %lld:十六进制long ling int类型
  • %llo:八进制的long long int类型
  • %llx:十六进制long long int类型
  • %llu:unsigned long long int类型
  • %le:科学计数法表示的long double类型浮点数
  • %Lf:long double 类型浮点数
  • %n:已输出的字符串数量,该占位符本身不输出,只讲值粗存在指定变量之中
  • %o:八进制整数
  • %p:指针(用来打印地址)
  • %s:字符串
  • %u:无符号整数(unsigned int)
  • %x:十六进制整数
  • %zd:size_t类型
  • %%:输出一个百分号

5.输出格式

5.1限定宽度

int main()
{
	printf("%5d\n", 123);//(  123)默认右对齐,凑齐五个长度
	return 0;
}

在这里插入图片描述

在示例代码中,%5d表示这个占位符的宽度至少为5位,如果不满5位,对应的值前面会添加空格,输出的值默认是右对齐,如果希望改成左对齐,即在输出内容后面添空格可以在占位符%的后面插入一个符号

左对齐
在这里插入图片描述

5.2限定小数位数

输出小数时,有时希望限定小数的位数

例,希望保留小数点后两位,占位符可以写成%.2f

int main()
{
	printf("%.2f", 0.5);//0.50
	return 0;
}

5.3总是显示正负号

在默认情况下下,printf()不对正数显示+号,只对负数显示-号。如果想让正数也输出+号,可
以在占位符的%后面加一个+
例:

int main()
{
	printf("%+d\n", 12);//+12
	printf("%+d\n", -12);//-12
	return 0;
}

%+d可以确保输出的数值,总是带有正负号

5.4限制宽度和限制小数位数结合使用

int main()
{
	printf("%*.*f\n", 5, 2, 0.5);//打印宽度为5,余两位小数的结果
	//相当于printf("%6.2f\n",0.5);
	return 0;
}

上面示例中,%* .*f的两个星号通过printf()的两个参数 6和 2传入

5.5输出部分字符串

int main()
{
	printf("%.5s\n", "helloworld");//只输出长度为5的字符串
	//打印结果为hello
	return 0;
}

上面示例中,占位符%.5s表示只输出字符串"hello world"的前五个字符,即"hello"

6.scanf函数

6.1scanf的基本用法

  1. scanf()函数用于读取用户的键盘输入。
  2. 程序运行到这个语句时,会停下来,等待用户从键盘输入。
  3. 用户输入数据、按下回车键后,Scanf()就会处理用户的输入,将其存入变量。
  4. 它的原型定义在头文件stdio.h
  5. scanf()的语法跟printf()类似。

6.2scanf的返回值

  1. scanf()的返回值是一个整数,表示成功读取的变量个数
  2. 如果没有读取任何项,或者匹配失败,则返回0
  3. 如果在成功读取任何数据之前,发生了读取错误或者遇到读取到文件结尾,则返回常量EOF(-1)。EOF-endoffile文件结束标志
    在vs环境中按三次ctrl+z强制结束输入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值