| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C语言 运算符、表达式 -> 正文阅读 |
|
[C++知识库]C语言 运算符、表达式 |
运算符、表达式
1、
C语言运算符
算术运算符和算术表达式
?+(加)、—(减)、*(乘)、/(除)、%(取余,也叫模运算符,该运算符两侧都要求为整数)
// printf("表达式的结果为%d\n",5/3);? ? 两个整数相除,系统会舍弃小数部分。
printf("表达式的结果为%d\n",9%4);? ? ? ?// 7/4 = 1,7%4 = 3? ? ? 9/4 = 2,9%4 = 1;
优先级问题:先乘除,后加减,如果优先级相同,则按照先算左边,后算右边的方式来处理(从左到右结合);
例如:2+3*5;这个先算乘法再算 加法? ? ? ? ?2+8-5;? ?这个从左到右计算
2、
赋值运算符
int i;
i = 4+3;? ?//把等号
右边的值
赋给
等号左边的变量。? ==> i = (4+3);? //括号,如果搞不懂优先级,那么就用()运算符把需要优先计算的内容括起来。
3、
强制类型转换运算符:讲一个表达式转换成所需要的类型
强制类型转换得到的是一个
所转换到的类型的的中间变量,但是
这个类型本身是没有变化而是
整个这个结果的类型发生了变化。
int a = 10;
double b;
b = (double) a;? ? ? ? ?在这里
a 本身类型并没有变化
而是这整个结果的类型发生变化。
(int)(x+y)? ? ?将x+y 的值转换成整型;
? (float) (5%3)? ?将5%3 的值转换成float型
总结:强制类型转换运算符的一般形式:
(
类型名)(
表达式)
? ? ?注意:(int) x+y? ? 这里表示将 x 转换为整型,然后和 y 相加。
两种类型转换:
(1)、自动类型转换:系统替你转换数据类型
(2)、强制类型转换:当自动类型转换无法达到目的的时候,就用 强制类型转换。
(% 取余,也叫模运算符,该运算符两侧都要求为整数)
i = (int) x % 3;
4、
自增和自减操作符? ? ++(自增)? --(自减)
自增和自减操作符
只能用于变量,
不能用于常量或表达式。比如错误的用法? ? 5++,(a-b)++ ,--5 ,--(a+b) ;
当自增或自减运算符在变量屁股后面时,对于该自增或自减
表达式的使用时,
先用后加。
int i = 6;
i ++;? ?// 7, 先用后加
++ i;? ?// 7,
注意:如果i++ 或者 ++ i
单独写成一个语句,没有任何区别,
都是将变量自身 +1,没有区别,但是,如果放
在函数调用中,结果就会不同。
例如:
A.用在函数中时:
printf("i++的结果是=%d\n",i++);???//这里表示先用后加,i ++的结果是 6;
printf("i++的结果是%d\n",i++);????????//先用后加,i++ 的结果是 6;i 本身变成了7。
printf("++i的结果是%d\n",++i);????????//先加后用,i++ 的结果是 7;i 本身变成了7。
printf("i--的结果是%d\n",i--);????????//先用后减,i-- 的结果是 6;i 本身变成了5。
printf("--i的结果是%d\n",--i);????????//先减后用,--i 的结果是 5;i 本身变成了5。
? ? ? ? ?
B.单独作为表达式的时候:【
表达式:可以理解为用 +-*/ 串起来的一个式子】
--i;??????//结果为5
i--;??????//结果为5
-i++; ==> -(i++);???????//这里看优先级,++ 的优先级比 -更高。
5、
赋值运算符和赋值表达式? ?(=) 将等号右边的值赋给等号左边的变量。
等号的左边,是一个变量,所谓这个赋值,大家理解成:给变量一个值,或者改变变量为哪个值。
int a;
a = 5;
a = 6.5;????//将实型数据赋给整型变量时,小数部分会被设置为??a = 6;
a = 18+50;?????//相当于 a = 68;
a = a+5;?????????// 相当于 a = 73;
float f;
f = 125;??????// 1.25E+2,实型变量是按指数形式保存在内存中的。
几个概念:
char a;? ? ?// 这个叫变量定义,系统会给a 分配一个字节的内存,内存里面的值不确定
char a = 90;? ? // 这个叫变量定义,同时给变量赋初值(定义时初始化);而且这个不是赋初值,这个叫:定义时赋初值。
a = 900;? ? ?// 赋值语句,这就是赋值,但是这里char类型会造成溢出,溢出后a里面的内容,就变得不可预料,会乱码。
赋值的原则:类型要相同,类型不同的要强制类型转换,当强制类型转换时,开发者必须自己明确是否会溢出。
int a =8;
a += 3;? // 11? a = a+3;
int x = 2;y = 8;
x *= y+8;? ? // 32 ==> x = x * (y+8);? 如果 *= 右侧是个表达式的话,则相当于该表达式有括号。
赋值表达式(复合的赋值表达式)本身也是有值的
int a = 4;
printf("a = 5这个赋值表达式的值是%d\n",a = 5);?????// 输出的结果是 5
printf("a += 8这个赋值表达式的值是%d\n",a +=8);? ? //输出的结果是 13
int a,b,c;
a=(b=5);? ?//a=5;b=5;
a = b = c=5;? ?//赋值运算符具有从右到左的结合性
a = (b = (c =5));
int a = 3;
a+=a-=a*a;? ? ? ? ?// a +=(a -=(a*a));? 结果为-12
6、逗号运算符和逗号表达式
逗号运算符? 将两个表达式 连接起来;逗号运算符 它的
优先级是最低的
格式:表达式1,表达式2
求解过程:先求解表达式1的值,再求解表达式2的值,整个 表达式的值是表达式2的值!
int a;
a = (4,5);???//整个表达式的值是5
a = (3+5,6+8);??//整个表达式的值是14
a = 3+5,a+4;???//整个表达式的值是60? a 的值变成了15
逗号表达式的扩展形式:
表达式1,表达式2,表达式3,表达式3,....表达式N,最终的值是表达式N的值。
int x,a;
x = (a = 3,6*3);???//a = 3;x = 18;
x = a =3,6*a;????// x = 3,a =3;???逗号表达式的结果是18,但是这个结果值并没有用到
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 10:16:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |