C语言程序设计第三章学习笔记

3.1第三章-第一节-运算符的概念


运算符与表达式


运算符:+ - * / %(%是求它的余数) ······
表达式:由操作数和运算符组成的式子,如a-b,1+2等
C语言中单一的一个变量或单一的一个常量是最简单的表达式。
永远输出表达式的值

优先级与结合性


优先级:参照桌面excel文件“C语言运算符优先级列表(超详细)”,从1开始逐渐减弱
结合性:同一优先级时,从左到右或者从右到左的运算顺序
单目、双目、三目运算符
单目运算符:运算对象只有一个,如:++、--、!、······
双目运算符:运算符两侧各有一个运算对象,如:+、—-、*、/、······
三目运算符::运算对象有三个,如:?(条件运算符)、······
初级运算符( )、[ ]、->、.  高于  单目运算符  高于  算数运算符(先乘除后加减)  高于  关系运算符  高于  逻辑运算符(不包括!)  高于  条件运算符  高于  赋值运算符  高于  逗号运算符。
位运算符的优先级比较分散。
除了赋值运算符、条件运算符、单目运算符三类的平级运算符之间的结合顺序是从右至左,其他都是从左至右。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

3.2第三章-第二节-算术运算符

算数运算符与表达式:+、-、*、/、%


+-*/:只要有一个运算对象是浮点型,则表达式的值是double型
%:注意,%求余运算符的两个运算对象必须都是整数,而且表达式结果的正负由被除数决定。

#include<stdio.h>
int main()
{
    float a = 0, c = 0;
    a = 5;
    c = 5 / 2;
    printf("%f\n", c);
    return 0;
}
//这样输出结果为2.0000,因为参与/运算的5和2都是整数
//如果改为5.0/2输出结果为2.5000


难点:自增运算符++、自减运算符--(均为单目运算符)


自增运算符:


a++后缀:在原本的基础上+1,先读后写

#include<stdio.h>
int main()
{
    int a = 0;
    a = 20;
    a++;
    //相当于a=a+1=21
    printf("%d\n", a++);
             //相当于“printf("%d\n",a);  a = a + 1;
    //这个先读,输出21
    printf("%d\n", a);
    //这个后写,输出22
    return 0;
}


++a前缀:先写后读

#include<stdio.h>
int main()
{
    int a = 0;
    a = 20;
    ++a;
    //相当于a=a+1=21
    printf("%d\n", ++a);//相当于 a = a + 1; printf("%d\n",a);  
    //这个先写,输出22
    printf("%d\n", a);
    //这个后读,输出22
    return 0;
}


自减运算符:

在原本的基础上-1,先读后写
运行代码同上

3.3第三章-第三节-关系、逻辑运算符


关系运算符与表达式:


>大于
<小于
>=大于等于
<=小于等于
==等于(单独=是赋值)
!=不等于
关系运算表达式的值为“真”或者“假”,用“1”和“0”表示。

#include<stdio.h>
int main()
{
    int a = 10;
    int b = 5;
    printf("%d\n", a>b);//输出1
    printf("%d\n", a<b);//输出0
    printf("%d\n", a==b);//输出0
    printf("%d\n", a!=b);//输出1
    printf("%d\n", a>=b);//输出1
    printf("%d\n", a<=b);//输出0
    return 0;
}

逻辑运算符与表达式


逻辑运算表达式的值为“真”或者“假”,用“1”和“0”表示。
注意:参与运算的对象只要不为0,则运算对象为真。


&&逻辑与运算符:

参与运算的对象都为真(不为0),结果才是真,只要有一个是假,结果就是假。
 

#include<stdio.h>
int main()
{
    int a = 16;
    int b = 23;
    printf("%d\n", a = b && a > b);
    return 0;
}


||逻辑或运算符:


参与运算的对象只要有一个为真(不为0),结果就是真(只有两个都是假的,结果才是假的。)
 

#include<stdio.h>
int main()
{
    int a = 15;
    int b = 10;
    printf("%d\n", a = b || a < b);
    printf("%d\n", a > b || a < b);
    printf("%d\n", a || b);
    printf("%d\n", !a||!b);
    printf("%d\n",b );
    return 0;
}


!逻辑非运算符:


使表达式的值由真变假或者由假变真

#include<stdio.h>
int main()
{
    int a = 16;
    int b = 10;
    printf("%d\n", !(a>b));
    printf("%d\n", !a);
    printf("%d\n", !a>b);
    printf("%d\n",!(a<b) );
    return 0;
}


 

//关系运算符和逻辑运算符综合练习
//成绩分为合格(60-100)与不合格(0-59)
#include<stdio.h>
int main()
{
    int a = 70;
    printf ("%d\n",a >= 60 && a <= 100);
    printf ("%d\n", a >= 0 && a <= 59);
    return 0;
}

                                                                                                                                         
3.4第三章-第四节-赋值运算符与表达式


赋值运算符与表达式


简单赋值运算符=
变量=表达式
复合的赋值运算符:加后赋值+=、减后赋值-=、乘后赋值*=、除后赋值%=、······

#include<stdio.h>
int main()
{
    int a = 10;
    printf("%d\n", a = 5);//5
    printf("%d\n", a += 5);//10
    printf("%d\n", a -= 4);//6
    printf("%d\n", a *= 3);//18
    printf("%d\n", a %= 5);//3
    printf("%d\n", a++);//3
    //每次都以上一个a的值进行运算
    return 0;
}


sizeof求字节运算符与表达式


sizeof(表达式)结果为表达式的数据类型占据的字节数

#include<stdio.h>
int main()
{
    int a = 6;
    printf("%d\n", sizeof(a));//输出为4,意为占据四个字节
    return 0;
}


强制类型转换符:(类型名)(表达式)


(类型名)表达式:先转换类型,再进行运算;
(类型名)(表达式):先进行运算,再转换类型。

#include<stdio.h>
int main()
{
    float a = 7.5, d = 1.5;
    int b = 2, c = 0;
    c = a * b;
    printf("%d\n", c);//输出15
    c = (int)a * b;
    printf("%d\n", c);//输出14
    c = (int)(a * b);
    printf("%d\n", c);//输出15
    c = a * b * d;
    printf("%d\n", c);//输出22
    c = (int)a * b * d;
    printf("%d\n", c);//输出21
    c = (int)a * b * (int)d;
    printf("%d\n", c);//输出14
    return 0;
}


不同类型的数据混合运算


为了保证数据的精确度/精度,计算机会自动向精确度/精度高的数据类型进行转换,例如char一定会转换成int,float一定会转成double。
 

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值