4.1基本运算符

谁说胖子不能爱 提交于 2020-02-15 03:56:21

这篇说说C语言中的运算符.

1.赋值运算符 =

本节内容在书5.2章.

编程语言中,"="都是赋值运算.比如看看下面的语句,想想她的标准读法:

number = 200;

上面的语句不是"number等于200", 而是"将值200赋值给变量number",赋值行为从右往左进行.

number = number + 10;

这条语句在数学中显然是不可能也是不合理的,但是在编程语言中就是合法的.

这条语句在C语言中也是合法的

number1 = number2 = number3 = 15;

赋值顺序是从右向左,所以顺序是

number3 = 15;
number2 = number3;
number1 = number2;

123

2.算术运算 +, -, *, /及优先级

2.1+和-

+和-的基本用法想必没人不知道,这里简单说一下用+和-来控制正负.

下面的语句是合法的

number1 = -number2;

表示将负的number2的值赋给number1 

C99开始,下面的语句也变成合法的

number1 = +number2;

2.2*和/

"*"就是乘法运算,大家也很熟悉了,下面来说说"/"运算.

int main(void) {
	printf("整数除以整数,结果为整数(不能整除)      : %d / %d = %d\n",          7, 4, 7 / 4);
	printf("整数除以整数,结果为整数(可以整除)      : %d / %d = %d\n",          8, 4, 8 / 4);
	printf("整数除以整数,结果为浮点数(不能整除)    : %d / %d = %2.2f\n",       7, 4, 7 / 4);
	printf("整数除以整数,结果为浮点数(可以整除)    : %d / %d = %2.2f\n",       8, 4, 8 / 4);
	printf("整数除以浮点数,结果为浮点数(不能整除)  : %d / %2.1f = %2.2f\n",    7, 4.0, 7/ 4.0);
	printf("整数除以浮点数,结果为浮点数(可以整除)  : %d / %2.1f = %2.2f\n",    8, 4.0, 8 / 4.0);
	printf("浮点数除以浮点数,结果为浮点数(不能整除): %2.1f / %2.1f = %2.2f\n", 7.0, 4.0, 7.0 / 4.0);
	printf("浮点数除以浮点数,结果为浮点数(可以整除): %2.1f / %2.1f = %2.2f\n", 8.0, 4.0, 8.0 / 4.0);
	return 0;
}

 运行结果

整数除以整数,结果为整数(不能整除)      : 7 / 4 = 1
整数除以整数,结果为整数(可以整除)      : 8 / 4 = 2
整数除以整数,结果为浮点数(不能整除)    : 7 / 4 = 0.00
整数除以整数,结果为浮点数(可以整除)    : 8 / 4 = 0.00
整数除以浮点数,结果为浮点数(不能整除)  : 7 / 4.0 = 1.75
整数除以浮点数,结果为浮点数(可以整除)  : 8 / 4.0 = 2.00
浮点数除以浮点数,结果为浮点数(不能整除): 7.0 / 4.0 = 1.75
浮点数除以浮点数,结果为浮点数(可以整除): 8.0 / 4.0 = 2.00

可以看到整数除以整数,要求结果为浮点数时,只能输出0.00而不是正确的结果,所以要尽量避免这种操作. 

2.3运算符优先级

编程语言中运算符的优先级与数学中一样.表格中优先级从上到下是从高变低.

运算符
() 小括号
* / 乘除
+ - 加减
= 赋值

3.其它运算符 sizeof, %, ++, --

3.1sizeof

前面曾经提到过sizeof,结果是"字节为单位返回运算对象的大小"(113页).

sizeof还可以用来看"类型"的大小,比如int.

int main(void) {
	int number = 0;
	size_t isize = sizeof(int); 
	size_t fsize = sizeof(float); 
	size_t vsize = sizeof number;                //不需要小括号
	printf("int的\"sizeof\"为:    %u\n", isize);
	printf("float的\"sizeof\"为:  %u\n", fsize); 
	printf("int变量的\"sizeof\"为:%u\n", vsize); 
	return 0;
}

运行结果

 

int的"sizeof"为:    4
float的"sizeof"为:  4
int变量的"sizeof"为:4

3.2取模%

取模就是我们熟悉的取余数运算,只能用于整数.

int main(void) {
	printf("取模运算,能除尽:   %d %% %d = %d\n", 7, 4, 7%4); 
	printf("取模运算,不能除尽: %d %% %d = %d\n", 8, 4, 8%4); 
	return 0;
}

运行结果

取模运算,能除尽:   7 % 4 = 3
取模运算,不能除尽: 8 % 4 = 0

3.3自增++,自减--

自增自减是一种方便的运算,可以将如下代码

number = number + 1;  //1
number = number - 1;  //2

 简化为

number++ ;  //1
number-- ;  //2

需要注意的就是前与后的问题,这里以++举例,--与++相同.

int main(void) {
	int number = 10;
	printf("number   = %d\n", number);
	printf("number++ = %d\n", number++);
	printf("number   = %d\n", number);
	printf("++number = %d\n", ++number);
	printf("number   = %d\n", number);
	return 0;
}

运行结果

number    = 10
number ++ = 10
number    = 11
++ number = 12
number    = 12

如果运算符在,就是"先运算再赋值",在就是"先赋值再运算".

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!