目录
1.运算符与表达式(赋值(补充:复合赋值)、算术、关系、逻辑、条件、自增自减、逗号运算)
何为表达式?
->表达式是指操作符与操作对象连接起来的合法式子
eg.+1、-1、1*2、1/2、2%3、1+2、1-2均为算术表达式
1>赋值、复合运算符与表达式
(先区分“==”与"=":“==”是相等,“=”是赋值)
常见格式:int 变量=常数;(若前面已经定义变量了,就可以直接写成“变量=常数”,并且其值在后面不能改变。
eg.int a=1; //把1赋给整形变量a,不能读成“a等于1”。
常见错误:
1.常数=变量; eg.3=a;
2.在定义赋值完变量之后又再次赋值
eg.const int b=1; b=2; //在第一次附完值就能近似将变量看为常量,第二次就约等于是“常量=常量”,是错误的。
复合赋值:连续对同一变量进行赋值。
特点:能更简洁表示。
表示四则运算:
a+=b; //a=a+b;
a-=b; //a=a-b;
a*=b; //a=a*b;
a/=b; //a=a/b; ("/"为除,“\"为换行)
2>算术运算符与表达式
运用:计算函数f(x,y)
#include <stdio.h>
//定义函数
double f(int x, int y) {
return x * x - 2 * y + 5;
}
//进行运算
int main() {
double f(int x, int y); //函数声明
printf("%lf", f(2, 3)); //函数调用
return 0;
}
20241126 诶主播刚好今天晚修上完欧阳佳老师的c理论课 又刚好讲了函数定义、声明、调用的区别及运用区分(往后会专门写函数模块)
函数定义:就是利用函数对变量进行具体的运算(四则运算、比较、赋值等)
格式:
返回值类型 f(数据类型 变量,...){
return ...(操作); //返回操作的结果数值。
}
注意:1.这里函数定义是不能写进任何别的函数(包括主函数),必须单拎出来写
2. 返回值类型可谓“void”且“()”可不填写变量及其类型,但此情况很少出现
函数声明:在调用函数前进行说明(会用到这个函数)
eg.(上文中)double f(int x,int y);
注意:1.若函数定义在主函数前,则不用进行函数声明。
2.函数声明能嵌套声明,但是不能嵌套定义
函数调用:在主函数中使用定义函数,并输出结果
3>关系运算符与表达式
(!!再次区分“==”与"=":“==”是相等,“=”是赋值)
特点:逻辑值(关系运算符的特有)
逻辑值是关系表达式的结果,逻辑真为1,逻辑假为0。
eg. int a=1,b=4;
a>b或者a>=b: 逻辑假,其值为0;
a<b或者a<=b: 逻辑真,其值为1;
a==b: 逻辑假,其值为0;
a!=b: 逻辑真,其值为1;
#include <stdio.h>
int main() {
int a = 1, b = 4;
printf("%d", a > b);
return 0;
}
优先级与下面的逻辑运算符一起进行整合~
4>逻辑运算符与表达式
逻辑运算符:&&("且")、||(“或”)、!(“非”)
“假”:0 “真”:非0值
总结:
对于&&:有一假就为假,要为真必须全真
对于||:有一真就为真,全假为假
优先级!!!(非常重要)
逻辑非!> 算术 > 关系 > 逻辑与&&、逻辑或|| > 赋值=
eg.
#include <stdio.h>
int main(){
int a;
a=1+5<8&&2+6||!10+1<3;
printf("%d",a);
return 0;
}
其值为1。
解释:由优先级:
先非-> !10 为0
再算术-> 6<8&&8||2<3
再关系-> 1&&8||1
再逻辑-> 1||1 -> 即a为1
!!易忘点:短路操作(仅对于逻辑运算符)
eg.(m=a>b)&&(n=c>d) 、
1. 若a=1,b=2,c=4,d=3,则m=?,n=?
由于a>b为逻辑假,对于“&&”:有一假就为假,所以m=0,且n值不知道
2.若a=2,b=1,c=3,d=4,则m=?,n=?
由于a>b为逻辑真,对于“||”:有一真就为真,所以m=1,且n值不知道
5>条件运算符(三目运算符)与表达式 唯一一个在c中的三目运算符
运算符:
表达式1?表达式2:表达式3
解释:如果表达式1 的值为真,则以表达式2 的值作为整个条件表达式的值,否则以表达式3 的值作为整个条件表达式的值
#include <stdio.h>
int main() {
int a, b, max;
scanf("%d%d", &a, &b);
max = a > b ? a : b; //若a>b则max取a,若a<b则max取b
printf("max=%d", max);
return 0;
}
若遇到嵌套比较,则需记住:运算方向是自右自左
比如,a>b?a:c>d?c:d; --> a>b?:(c>d?c:d);
6>自增自减运算符与表达式
相同点:
i++ 与 ++i 均为自增 i-- 与 --i 均为自减
区别:
i++为前自增 先自增再进行其他操作
++i为后自增 先进行其他操作再自增
(--同理)
7>逗号运算符与表达式
运算符:
表达式1,表达式2
解释::先计算左边的操作数,再计算右边的操作数,右操作数的类型和值作为整个表达式的结果。
在这里推荐下我们欧阳佳老师的941.code!!(直接搜索这个第一个就是了~)特别特别好用 基础题提高题都有!!重要是它免费啊()
附网址:www.941code.com
最后,感谢欧阳佳老师的ppt内容及图片!!