周六,上午考了高数,下午一觉睡到晚上九点,但该学还是要学的
先是看了极客江南的文章,关于运算符讲解的很详细到位,顺便补了下清除缓冲setbuf(stdin, NULL);fflush(stdin);
运算符
总览
- 按照功能划分:
- 算术运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 按照参与运算的操作数个数划分:
- 单目运算:只有一个操作数 如 : i++;
- 双目运算\n有两个操作数 如 : a + b;
- 三目运算\nC语言中唯一的一个,也称为问号表达式 如: a>b ? 1 : 0;
优先级
大部分运算符都是已经接触过了的,理解难度并不大,运算优先级还有相关细节的话,有点繁琐
注意点:
- 无论是float还是double都有精度问题, 所以一定要避免利用==判断浮点数是否相等
- C语言标准没有明确的规定,同一个表达式中同一个变量自增或自减后如何运算, 不同编译器得到结果也不同, 在企业开发中千万不要这样写
现在是凌晨2点50,有两串代码理解上有点问题,明天再解决吧,That's all
#include <stdio.h>
int main(){
int number = 10;
// 赋值运算符优先级是14, 普通运算符优先级是3和4, 所以先计算普通运算符
// 普通运算符中乘法优先级是3, 加法是4, 所以先计算乘法
// number += 1 + 25; number += 26; number = number + 26; number = 36;
number += 1 + 5 * 5;
printf("number = %i\n", number); // 36
}
#include <stdio.h>
int main(){
// 复合赋值运算符 += -= *= /= %=
// 将变量中的值取出之后进行对应的操作, 操作完毕之后再重新赋值给变量
int num1 = 10;
// num1 = num1 + 1; num1 = 10 + 1; num1 = 11;
num1 += 1;
printf("num1 = %i\n", num1); // 11
int num2 = 10;
// num2 = num2 - 1; num2 = 10 - 1; num2 = 9;
num2 -= 1;
printf("num2 = %i\n", num2); // 9
int num3 = 10;
// num3 = num3 * 2; num3 = 10 * 2; num3 = 20;
num3 *= 2;
printf("num3 = %i\n", num3); // 20
int num4 = 10;
// num4 = num4 / 2; num4 = 10 / 2; num4 = 5;
num4 /= 2;
printf("num4 = %i\n", num4); // 5
int num5 = 10;
// num5 = num5 % 3; num5 = 10 % 3; num5 = 1;
num5 %= 3;
printf("num5 = %i\n", num5); // 1
}