C语言 运算符、表达式

article/2025/9/23 17:17:13
运算符、表达式
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,但是这个结果值并没有用到

http://chatgpt.dhexx.cn/article/CYhtX74y.shtml

相关文章

c语言表达式语法问题,c语言表达式语法规则是什么_后端开发

c语言统计单词个数的方法_后端开发 在一篇文章中单词都是用空格隔开的,所以单词个数空格数1,c语言统计单词个数实际上转换成了统计文章中的空格数,可以用while和if来进行统计。 c语言表达式语法规则是什么 C语言表达式语法规则如下&#xff1…

c语言表达式成立,若有int y;则表示命题“y是偶数”成立的c语言表达式是多少...

满意答案 hoome_09 2017.12.28 采纳率:44% 等级:8 已帮助:263人 1. 若有int y;则表示命题“y是奇数”成立的C语言表达式是 (y%2 1) 。 2. 在C语言中,表示逻辑“真”值用(true) 表示。 3. 条件“2<x&…

C语言表达式用法快来看看

点击上方蓝字关注我,了解更多咨询 表达式是C语言的主体。在C语言中,表达式由操作符和操作数组成。最简单的表达式可以只含有一个操作数。根据表达式所含操作符的个数,可以把表达式分为简单表达式和复杂表达式两种,简单表达式是只含…

数学式子对应的c语言表达式是,把数学式写成C语言表达式

(1) 3.26*exp(x)1.0/3.0*pow((ab), 4) (2) 2*sqrt(x)(ab)/(3.0*sin(x)) (3) g*m1*m2/(r*r) (4) double pi 3.14 2.0*pi*r pi*r*r cos(45.0*pi / 180.0 ) (5) loan * rate * pow( (1rate) , month ) / ( pow( (1rate) , month) - 1) 扩展资料: 指针: 如…

C语言表达式专练

1、以下表达式值为3的是 A)16-13%10 B)23/2 C)14/3-2 D)(26)/(12-9) 2、设有说明语句:int k7,x12;则以下能使值为3的表达式是 A) x%(k%5) B)x%(k-k%5) C)x%k-k%5 D)(x%k)-(k%5) 3、若x、i、j和k都是int型变量,则执行表达式x(i4,j16,k32)后x的值为 A&…

快速求组合数

摘自https://www.jianshu.com/p/718a5ac26238 逆元快速幂解法 (一)基本概念 上面两种方法都使用了递归方法,递归方法有个缺陷,就是在数据较大时效率较低。所以这里要介绍一个种新的求组合算法。在了解此算法之前,要先了…

Java计算组合数以及生成组合排列

前言 组合数计算 公式法 逐个相除法(错误) 逐个相除法修正版 素数幂乘法 基本公式法 平方差连乘法 组合恒等法 简单递归法 杨辉三角法 杨辉三角优化法 二进制法 组合数计算小结 获取数组的组合排列 二进制法 基本迭代法 从后向前迭代法(Matlab版本…

[组合] 组合数计算四大算法模板(模板+卢卡斯定理)

文章目录 0. 前言1. 预处理组合数组合递推式2. 预处理阶乘逆元3. 卢卡斯定理4. 高精度组合数 0. 前言 组合数求解有很多种方式,不同的方式对应这不同的时间复杂度,难以程度也是不尽相同。根据数据范围选择对应的方法即可。 1. 预处理组合数组合递推式 …

组合数

1、定义:从m个不同元素中,任取n(n≤m)个元素并成一组,叫做从m个不同元素中取出n个元素的一个组合;从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数。 2、公式:…

组合数取模总结

题目描述&#xff1a; 在ACM竞赛现在叫JB竞赛&#xff1f;中&#xff0c;经常会遇到组合数取模的题目&#xff1b;就我现在的水平而言&#xff0c;大概分为以下三类&#xff0c;以后遇到新的方法会在做补充&#xff1b; 第一种&#xff1a; n和m都较小 &#xff08;<1000&a…

逆元求组合数

逆元简介 同余符号 ≡ 先bb一下 ≡&#xff0c;这个符号有三个意思&#xff0c;再这里用到的意思为“同余符号”。≡ 的介绍 两个整数a&#xff0c;b&#xff0c;若它们除以整数m所得的余数相等&#xff0c;则称a&#xff0c;b对于模m同余 记作a≡b(mod m) 读作a同余于b模m&am…

组合数(Combinatorial_Number)

定义&#xff1a; 从n个不同元素中&#xff0c;任取m(m≤n)个元素并成一组&#xff0c;叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数&#xff0c;叫做从n个不同元素中取出m个元素的组合数。 公式&#xff1a; 在线性写法中被…

组合数的计算

本篇博客来自南昌理工学院acm集训队成员yyj 组合数 1.定义 组合数&#xff1a;从 n 个不同元素中每次取出 m 个不同元素 &#xff0c;不管其顺序合成一组&#xff0c;称为从 n 个元素中不重复地选取 m 个元素的一个组合。所有这样的组合的种数称为组合数。 2.性质与描述 2…

组合数的性质证明

性质 极其简单的证明 根据杨辉三角的性质&#xff0c;第x行第y个的值为C(x-1,y-1) 那么 一目了然。 严肃的证明

组合数性质--二项式系数之和等于2^n的证明

1.公式 首先我们都知道组合数的意义&#xff0c;就是说一共有n个样本&#xff0c;一次性从中取出m个样本&#xff0c;一共有多少种不同的取法。它的公式如下&#xff1a; 它有这么一个性质&#xff1a; 该性质有若干种证明方式&#xff0c;今天我在这边写出我觉得挺巧妙的一种…

组合数原理

资料来源&#xff1a;https://baike.baidu.com/ 组合数 从n个不同元素中&#xff0c;任取m(m≤n)个元素并成一组&#xff0c;叫做从n个不同元素中取出m个元素的一个组合&#xff1b;从n个不同元素中取出m(m≤n)个元素的所有组合的个数&#xff0c;叫做从n个不同元素中取出m个…

深入详细理解矩阵 (矩阵的加减乘、转置、共轭、共轭转置)

简介 矩阵:英文名Matrix。在数学名词中&#xff0c;矩阵用来表示统计数据等方面的各种有关联的数据。这个定义很好地解释了Matrix代码制造世界的数学逻辑基础。矩阵是数学中最重要的基本概念之一&#xff0c;是代数学的一个主要研究对象&#xff0c;也是数学研究及应用的一个重…