栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

一、C语言基础篇——03. 运算符与表达式

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一、C语言基础篇——03. 运算符与表达式

01. 常用的运算符分类
运算符类型作用
算术运算符用于处理四则运算
赋值运算符用于将表达式的值赋给变量
比较运算符用于表达式的比较,并返回一个真值或假值
逻辑运算符用于根据表达式的值返回真值或假值
位运算符用于处理数据的位运算
sizeof运算符用于求字节数长度
02. 算数运算符
运算符术语示例结果
+正号+33
-负号-3-3
+加10 + 515
-减10 - 55
*乘10 * 550
/除10 / 52
%取模(取余)10 % 31
++前自增a=2; b=++a;a=3; b=3;
++后自增a=2; b=a++;a=3; b=2;
–前自减a=2; b=–a;a=1; b=1;
–后自减a=2; b=a–;a=1; b=2;
#include 
int main()
{
    int a = 5;
    int b = 2;
    double c = a/b;
    printf("c = %lfn",c);   //打印结果: 2.000000  不是我们想要的
    //两个数相除,想要得到小数,除数或被除数必须有一个是浮点数,否则会取整
        
    int d = a % b;   //a = 5,  b = 2;
    printf("d = %dn",&d);  //打印结果1
    
    //后置++,先用后加,先执行完这个语句,a的值赋值给d,a再自加1
    d = a++;
    printf("d = %dn",&d);  //打印结果5
    
    //前置++,先加后用,a先自加1,再执行这个语句,将a的结果赋值给d
    d = 1;
    a = 5;
    d = ++a;
    printf("d = %dn",&d);  //打印结果6
    
    return 0;
}
03. 赋值运算符
运算符术语示例结果
=赋值a=2; b=3;a=2; b=3;
+=加等于a=0; a+=2;a=2;
-=减等于a=5; a-=3;a=2;
*=乘等于a=2; a*=2;a=4;
/=除等于a=4; a/=2;a=2;
%=模等于a=3; a%2;a=1;
#include 
int main()
{
    int a = 2;
    a += 2;  //a加上2后,在赋值给a,相当于 a = a + 2;
    
    //后面的类似
    return 0;
}
04. 比较运算符
运算符术语示例结果
==相等于4 == 30
!=不等于4 != 31
<小于4 < 30
>大于4 > 31
<=小于等于4 <= 30
>=大于等于4 >= 11

非0的数就是真,通常以1表示真

0就是假,以0表示假

#include 
int main()
{
    //因为 4 == 3为假, 所以结果为0
    printf("%dn",4 == 3);
    
    //因为 4 > 3为真, 所以结果为1
    printf("%dn",4 > 3);
    
    //因为 4 != 3为真,所以结果为1,
    printf("%dn",4 != 3);
    
    return 0;
}
05. 逻辑运算符
运算符术语示例结果
!非!a如果a为假,则!a为真; 如果a为真,则!a为假。
&&与a && b如果a和b都为真,则结果为真,否则为假。
||或a || b如果a和b有一个为真,则结果为真,二者都为假时,结果为假。
#include 
int main()
{
    //因为4 == 3为假,所以!(4==3)为真,结果是1
    printf("%dn",4 == 3);
    
    //&&,左右结果都是真,整体结果就为真
    printf("%dn",1 && 0);  //结果是:0
    
    //||,只要有一边是真,结果就是真
    printf("%dn",1 || 0);   //结果是:1
    return 0;
}

短路规则(编译器优化)

||运算符:左边为真,右边不执行

&&运算符:左边为假,右边不执行

06. 运算符优先级
优先级运算符结合方向
1[] () . ->左到右
2- ~ ++ – * & ! (类型) sizeof右到左
3/ * %左到右
4+ -左到右
5<< >>左到右
6> >= < <=左到右
7== !=左到右
8&左到右
9^左到右
10|左到右
11&&左到右
12||左到右
13? :右到左
14赋值运算符右到左
15, 逗号运算符左到右
07. 类型转换
#include 
int main()
{
    //隐式转换
    double a;
    int b = 10;
    
    //字节小的类型转字节大的类型,隐式转换,编译器自动转换
    //b自动转换成double型,再给a赋值
    a = b;
    
    //强制转换
    double a = 10;
    a = (int)a;  //将a强制转换为int型
    
    int i = 0;
    //%u打印,所以它需要一个unsigned int型,将i进行强转成unsigned int型
    printf(" %u n",(unsigned int)i);
    
    return 0;
}

强制类型转换原则:占用内存字节少的类型,向占用内存字节数多的类型转换,保证精度不降低。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030449.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号