一、算术运算

  1. 种类

    1> 加(+),同时可以表示正号

    2> 减(-),同时可以表示负号

    3> 乘(*)

    4>除(/)

    5>取余(%)

  2. 关于类型转换

    1>自动类型转换

    ① char类型和short类型在运算时,要先自动转换为普通整型
    ② 参与运算的多个操作数,如果类型不一致,要先转换为操作数中最
    高级别的类型

    2>强制类型转换

    ① 将某种类型强制转换为其他某种类型
  3. 使用注意

    1> 算术运算符都为双目运算符,存在左值和右值

    2> 多个操作数参与运算,要进行自动类型转换(转换为最高级别),结果与转换后的类型一致

    3> 除(/)运算符的右值不能为零

    4> 取余(%)运算符的左值和右值必须是整数,且结果的正负性与左值一致

    5> 算术运算符按优先级结合,同等优先级的运算顺序为从左到右

  4. 关于算术运算符的示例(该博文中此示例后的示例,都使用代码块,可本示例的main函数中测试)

    #include<stdio.h>

int main()

{

int a1 = 1;

int a2 = 2;

short a3 = 3;

int intResult;

float b1 = 1.1;
float b2 = 2.2;
float floatResult; char c = 'c'; //自动类型提升
{
//a3提升为int类型
intResult = a1 + a3; //c提升为int类型
intResult = a1 + c; //a1提升为float类型
floatResult = a1 + b1;
} //强制类型转换
{
//将a1强制转换为float类型,(提升类型)数值不变
floatResult = (float)a1; //将b1强制转换为int类型,(降低类型)数值改变
intResult = (int)b1;
} //关于除(/)运算符
{
//结果为整型的0
intResult = a1 / a2; //结果为浮点型的0.5
floatResult = a1 / a2; //编译时会有警告,警告信息为division by zero is undefined
//运行时会报错,错误信息为Floating point exception: 8
//且无法输出floatResult
floatResult = a1 / 0; } //关于取余(%)运算符
{
//取余运算又称为模运算,结果为0
intResult = a1 & a2; //编译时会报错
intResult = a1 & b1;
} return 0;

}


二、赋值运算 1. 使用注意 1> 算术运算符为双目运算符,存在左值和右值
2> 结合性为从右到左
3> 常量不能作为复制运算符的左值
4> 赋值时,操作数的精确度不一样,可能会丢失精确度 2. 关于赋值运算符的示例(用代码块表示示例) ```
{
int a = 1;
int b = 2;
int intResult; float d = 1.1;
float floatResult; //现将常量10赋值给a,再赋值给b
b = a = 10; //丢失精确度,值改变
intResult = d;
//不丢失精确度,值不变
floatResult = a; //会报错,错误信息expression is not assignable,常量值不可以被改变
10 = a;
}

三、自增自减

  1. 种类

    1> 自增(++),等价于 a += 1

    2> 自减(- -),等价于a -= 1

  2. 使用注意

    1> ++a和a++区别:前者是在对a进行其他操作之前自增,后者是在之后

    2>尽量避免出现a + - -b,因为结果依赖于求值顺序

  3. 示例

    //自增自减
    {
    int a = 0;
    int b = 1;
    int result; //复杂运算 结果为a = 1,b = 0,result = 1
    result = a++ + (--b);
    }

四、sizeof 1. 使用注意 1> sizeof(a),计算变量a(可以为变量或常量)在内存中所占的字节数,由a的类型决定
2> 若sizeof用于计算指针类型,无论该指针为何种类型,结果都为该编辑器中指针的长度 2. 示例 ```
{
int a;
float b;
int count; typedef struct
{
int c;
float d;
} Ptr;
Ptr *p; //结果为4,为整型长度
count = sizeof(a); //结果为4,为浮点型长度
count = sizeof(b); //结果为8,为指针类型长度
count = sizeof(p);
}

五、关系运算

  1. 种类

    1> >、>=

    2> <、<=

    3> !=、==

  2. 使用注意

    1> C语言中没有BOOL类型,用0表示假,非0表示真

    2> 运算顺序为从左到右

    3> 不要把与=弄混,会造成难以发现的错误,使用时,尽量把常量作为左值

  3. 示例

    {
    int a = 1;
    int b = 2;
    int c = 3;
    int d = 3;
    int result; //验证运算顺序
    result = a<=b>a;
    printf("%d\n", result); //使用==时,将常量作为左值
    if (1 == a)
    {
    ; //空语句
    }
    }

六、逻辑运算 1. 种类 1> 或(||),参与运算的操作数,只要有一个为真,结果就为真
2> 与(&&),参与运算的操作数,只要有一个为假,结果就为假
3> 非(!),将原来的真假性改变为相对的真假性 2. 使用注意 1> 结合性从左到右
2> 或(||)运算符,只要左值中出现真值,就不再计算后边的表达式
3> 与(&&)运算符,只要左值中出现假值,就不再计算后边的表达式
3. 示例 ```
{
int a = 0;
int b = 1;
int c = 2;
int result; //或(||),结果为result = 1,c = 2
result = b || c++; //与(&&),结果为result = 0,c = 2
result = a && ++c;
}

七、三目运算

  1. 使用注意

    1> 为了程序的可读性,尽量不要使用嵌套

    2> 可以转化为相应的if语句

  2. 示例

    {
    int a = 1;
    int b = 2;
    int c = 3;
    int result; //返回a、b中最大的值
    result = a>b ? a : b; //嵌套使用,返回a、b、c最大的值,可读性差
    result = (a>b ? a : b)>c ? (a>b ? a : b) : c;
    printf("%d\n", result);
    }

C语言-02-基本运算的更多相关文章

  1. C语言-02基本运算

    1.除法运算 / 整数除于整数,还是整数.参与运算的操作数必须是同类型. 1/2的值是0.参与运算的操作数是什么类型,得出的值就是什么类型.   10.5 + 10将右边的10提升为了double类型 ...

  2. C语言02

    C语言02 1.2 C语言与C程序 1.计算语言 语言发展 机器语言:机器语言是机器能直接识别的程序语言或指令代码,勿需经过翻译,每一操作码在计算机内部都有相应的电路来完成它,或指不经翻译即可为机器直 ...

  3. OC语言-02面向对象的三大特性

    01封装 #import <Foundation/Foundation.h> @interface Student : NSObject { //@public 成员变量尽量不使用 int ...

  4. C语言 02 include

    stdio.h  h表示header file include"text.txt" 自己写的文件用双引号,系统自带文件用<>. 绝对路径用 / ,相对路径不带/

  5. C#语言-02.数据类型

    a. 数据类型 i. 值类型:是一种由类型的实际值表示的数据类型,存储在栈内的存储空间中,由于编译器编译后将源代码中的值类型变量直接对应到唯一的存储空间上,直接访问该存储空间,故值类型的数据具有较快地 ...

  6. 算法实现c语言--02

    从键盘上输入字符,将小写字母转换成大写字母.输入“ctl + z” 结束 . #include<stdio.h> #include<stdlib.h> //从键盘上输入字符,将 ...

  7. C#语言和数据库基础

    第一章 第一个C#程序 Vs2012密钥 RBCXF-CVBGR-382MK-DFHJ4-C69G8 01..net和C#的区别 大概在2000年,微软推出了一种革命性的产品--.NET(战略) 目标 ...

  8. C#语言的基础

    一.C#的引入 01..net和C#的区别 1)大概在2000年,微软推出了一种革命性的产品--.NET(战略) 目标:任何人,在任何地方,使用任何终端设备,都可以访问微软提供的服务. 2).net ...

  9. iOS学习路线图

    一.iOS学习路线图   二.iOS学习路线图--视频篇       阶 段 学完后目标 知识点 配套学习资源(笔记+源码+PPT) 密码 基础阶段 学习周期:24天       学习后目标:    ...

  10. c#前3章总结

    01.net和c#的区别 大概在2000年,微软推出了一种革命性的产品--.NET(战略) 目标:任何人,在任何地方,使用任何终端设备,都可以访问微软提供的服务. .net Framework:要想让 ...

随机推荐

  1. vim 图解常用快捷键操作

    图片太大,可以将图片另存后看或者右键点击,选择查看图片.

  2. iOS- 微信支付 (服务器调起支付 )以及回调不成功的原因 不看后悔

    写的不错,给留个言哈... 一. 支付准备工作 1. 微信相关准备工作 (1) 向微信官方开通支付功能. 这个不是前端的工作. (2) 导入官方下载的微信支付SDK包. 我用的是微信开放平台下载的SD ...

  3. LeetCode——Find the Duplicate Number

    Description: Given an array nums containing n + 1 integers where each integer is between 1 and n (in ...

  4. 探索jdk8之ConcurrentHashMap 的实现机制

    在介绍ConcurrentHashMap源码之前,很有必要复习下java并发编程中的一些基础知识,比如内存模型等. 存储模型 并发编程中的三个概念 1.原子性 2.可见性 3.重排序 对HashMap ...

  5. .Net魔法堂:史上最全的ActiveX开发教程——开发篇

    一.前言 在设计某移动内部自动化运维平台时,经综合考虑终端机性能和功能需求等因素后,决定采用B/S模式,并且浏览器通过ActiveX组件实现与服务器Agent作P2P的通讯.好处,整个平台以网页形式存 ...

  6. IOS开发UI基础 UIDatePicker的属性

    UIDatePicker        •    Locale设置DatePicker的地区,即设置DatePicker显示的语言.// 1.跟踪所有可用的地区,取出想要的地区    NSLog(@& ...

  7. Scrum4.0

    1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领任务,PM根据具体情况进行任务的平衡. 然后每个人都着手实现自己的任务. 3.为了团队合作愉快进展顺利 ...

  8. P6 EPPM Installation and Configuration Guide 16 R1 April 2016

    P6 EPPM Installation and Configuration Guide 16 R1         April 2016 Contents About Installing and ...

  9. 面向对象的JavaScript(3):私有成员和公开成员

    在小项目中对于JavaScript使用,只要写几个function就行了.但在大型项目中,尤其是在开发追求 良好的用户体验的网站中,如SNS,就会 用到大量的JavaScrpt,有时JavaScrip ...

  10. 【jQuery基础学习】08 编写自定义jQuery插件

    目的:虽然jQuery各种各样的功能已经很完善了,但是我们还是要学会自己去编写插件.这样我们可以去封装一些项目中经常用到的专属的代码,以便后期维护和提高开发效率. jQuery插件的类型: 封装对象方 ...