#02 运算符合表达式
##一.基本算术运算符
1.1 例一:
程序执行 初始化赋值 a.b 扫描到 b 的值 等 a+b相加 进行运算 在执行打印输出
include<stdio.h>
int main()
{
int a = 10; b = 5; //对 a和b 进行初始化,并赋值
b = a +b ;
printf("%d" b);
getchar();
getchar();
}
1.2 例二 :
如果我在 b =a+b ; 后再定义一个 C = A*B 出来的值是 150 ,因为B的值已经执行 a+b了
代码附上
int main() { int a = 10, b = 5; b = a + b; int c = a * b; printf("%d\n%d", b,c); getchar(); getchar(); return 0; }
int main()
{ int a = 10, b = 5; b = a + b; int c = a * b;
printf("%d\n%d", b,c);
getchar();
getchar();
return 0;
}
1.3.除法的注意事项
代码如上
int main() { //除法注意事项 double a = 10, b = 6;//算 10/6
double c = a / b;
printf("%f", c);
getchar();
getchar();
return 0;
}
注释:整形之间没有小数
结果是 1.666667 ,为什么呢, 应为 %f 默认double类型 有效位 15-16个 为什么只有这些麻烦 haay老师给我在讲解一下111
1.4. 取余 %
代码如下
取余是2个数之间相除
int main() { int a = 10, b = 6; printf("%d", a%b); getchar(); getchar(); return 0; }
1.5. 自增and 自减
++在前面 表示 先加运算后 再执行
++ 再后面 表示 先执行后赋值
int a = 0, b = 0; a++; int c = a; printf(“前面的++ %d”, c); 1 printf(“后面的++ %d”, a++);1 //为什么这部会等于 一 应为前面a++定义了在打印输出前面 加1了 最 后的不影响结果 printf(“前面的++ %d”, ++b);1 // printf(“后面的++%d”, b++);0
##二. 常用运算符
2.1 赋值运算符
a++; a = a + 1; a = a + 2; int a = 0; a += 2; a = a + 2; a += 3; => a [+]= a + 3; //不理解!!!
2.2比较运算符
> 大于 >=
< 小于 <=
=
!= 不等于
int a = 0, b = 3; printf("%d", a != b);//1 **printf("%d", a > b);//**0 **printf("%d", a >= b);//**0 getchar(); getchar(); return 0;
2.3.表达式与语句
int a = 10, b = 6; //语句1 表达式? 这个不是 printf("%d", a != b); //返回一个 false/true bool 这个是表达式 getchar(); getchar(); return 0;
a 不等于 b 表达式成立 返回结果为 true 结果为真
2.4 逻辑运算符
! 非 取反
&& 与 都为一 ,为1 ,有1为0 都为0
| | 或 有1 为1 都为1 都是0 全是 0
注释:这些很重要 ,因为我老是忘记!!!
int main() { printf("%d", 0 && 1); //与运算 && 2个都为1 条件为真就是1,不然就为假0 printf("%d", 1 && 0); //与运算 && 2个都为1 条件为真就是1,不然就为假0 printf("%d", 1 || 0);//或运算 只要其中有1 就是1,要是都是0,就都为假 printf("%d", 0||0); getchar(); getchar(); return 0; }
2.5 三目运算符
一个运算符对三个操作数运算 ?:
true/false
表达式1 ? 表达式2 :表达式3;
第一个表达式判断 成立,则返回 : 前面的值 否则返回 : 后面的值
公式: printf("%d", 6 ? 2 : 3);
int A = 6, B =10; printf("%d",A>B?A:B;)
使用三目运算符比较 A.B的大小 ,返回大的数
要返回小的数 就 b:a ok 过
##三.类型转换
3.1 隐式转换
float f = 3.14;// 隐式转换? 有的 3.14 默认什么类型 double double res = 6.66 / 2;// 隐式转换? 数据类型不同 要不要转换 肯定是要的 printf("%f\n%f", res,f);
输出的结果为 默认 double类型
说实话,这块就明白了 flooat 输出模式默认 double,没感觉到其他意思…
3.2 显示转换 (数据类型)变量 一般不要强制转换 ?
printf("%d", (int)3.14);// ? 什么类型整形 3 float f = 3.14;// 亿 int 亏了多少 0.14 printf("%d", (int)f);// ? 什么类型整形 3 printf("%f", (double)3);// float double printf(“hello harry”);
第一个 是将3.14强制转化为int 整数类型
把 浮点数类型 f 强制转化为int 类型
把 3 输出为 double 类型 为 3.00000
开心笔记搞定 !!!
END
怎么可能 还有作业呢 ^^^^^
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2MHCwUfE-1622717793452)(https://gitee.com/ycqsure/iamgehow/raw/master/img/20210603185407.png)]
1.先打3边代码 ?
what? 我不是没事情都在敲代码么 ok 完美 过
\2. 一下程序 输出的结果是什么(不能执行看结果,自己推算?)
int x = 0, y = 2;
int res = (++x; || ++y);
printf("%d", res);
我告诉你不运行我都知道 是 1,为什么呢,因为 ++ 是先运算在执行的
也就四 1 || 3 //我可耻的有往前翻了一下 ,我有忘记 || 这个是或运算
都是1 就位1
答案是 1
\3. 上一题 y 最后输出的值是 3
\4. 从键盘输入三个数,输出其中最大的数
代码 #include<stdio.h> //作业 4 int main() { int a, b, c; scanf("%d\n%d\n%d", &a, &b, &c); int max = a > b ? (b > c ? b : c) : (a > c ? a : c); printf(“三目运算符最大的数是:%d\n”, max); int x, y, z; scanf("%d\n%d\n%d", &x, &y, &z); if (x > y ) { printf(“x最大是:%d”, x); } else if (y > z) { printf(“y最大是:%d”, y); } else if (z > x) { printf(“z最大是:%d”, z); } getchar(); getchar(); return 0; }