这篇说说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
如果运算符在前,就是"先运算再赋值",在后就是"先赋值再运算".
来源:CSDN
作者:bujiujie8
链接:https://blog.csdn.net/bujiujie8/article/details/104317591