逗号表达式,逗号表达式怎么用
逗号表达式,逗号表达式怎么用详细介绍
本文目录一览: 逗号表达式
1.逗号运算符将两个以上的表达式用逗号联起来,
2.计算过程为从左到右;
3.整个逗号表达式会有一个返回值,是最后一个表达式的值
4.逗号运算符的优先级在所有运算符中是最低的
在实际讲逗号表达式的时候,经常会举比较不好的例子:
1.一般讲逗号运算符时喜欢用类似例子:(1 2, 3 4),这个逗号表达式的返回值为3 4的值7,但是用这个例子恰好会误导被认为逗号表达式没有价值
2.for (int i = 0, j = SIZE - 1; i < j; i, -- j) {
}
这种for循环里int i = 0, j = SIZE - 1当作逗号表达式,但实际上在这int i = 0, j = SIZE - 1并不是一个逗号表达式,逗号表达式是有返回值可返回的,如果把int i = 0, j = SIZE - 1赋给一个变量会报错,证明并不是逗号表达式
1.int i, j;
for (i = 0, j = SIZE - 1; i < j; i, -- j) {
}
这里是用的逗号表达式,如果有类型声明的话就不是了。类似的有
while(a = get_s(), count_s( a), a > 0){
.......................
}
这两个使用本质都是在只能有一个表达式的地方需要多个计算式,使用了逗号表达式
比如还有if后面只能有一个表达式,多了就要加括号了,那如果不加括号可不可以呢?当然可以:
if( a < b)
tmp = a, a = b, b = tmp;
但是呢,这种写法其实是不好的,因为可读性不强
上面这些例子使用的都是逗号表达式可以在一个分号内实现多个操作这种
2.譬如,要求连续输入某个变量的值,一旦这个值为0则停止
int i;
while( scanf("%d",&i), i != 0 )
{
}
这个逗号表达式会把第二个式子i != 0的值作为while判断的condition,实际利用的是逗号表达式的返回值属性。
3.作为宏:#define func(a) (a=a 5, a)
感觉以上这几个使用的例子依然不够充分,且都有替代方案,但无论如何逗号表达式总是多了一种选择
逗号表达式怎么用
表达式1,表达式2,表达式3,...... ,表达式n
逗号表达式的要领:
(1) 逗号表达式的运算过程为:从左往右逐个计算表达式。
(2) 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。
(3) 逗号运算符的优先级别在所有运算符中最低。
在代码中,%d作为格式声明部分已经控制了输出值只能为十进制数,因此其输出值是实际值向下取整的结果。由取值x=10与y=3,z的值应当为10/3,也就是3.33333333······。但由于添加了流控制,输出结果只能为3。
除了整数限制以外,代码中的\n是普通字符中的换行符,表示输出后控制移到下一行的开头。
扩展资料
关于逗号运算符的详细解答及用法示例:
C语言提供一种特殊的运算符——逗号运算符。用它将两个(或多个)表达式连接起来。
如:3 5,6 8
上式称为逗号表达式。逗号表达式的一般形式为表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值
例如,上面的逗号表达式“3 5,6 8”的值为14。
又如,逗号表达式a=3*5,a*4,对此表达式的求解,赋值运算符的优先级别高于逗号运算符, 因此应先求解a=3*5,经计算和赋值后得到a的值为15,然后求解a*4,得60,整个逗号表达式的值为60(a仍为15)。
再如,一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如(a=3*5,a*4),a 5 先计算出a的值等于15,再进行a*4的运算得60(但a值未变,仍为15),再进行a 5得20,即整个表达式的值为20。
参考资料来源:
百度百科——逗号表达式
逗号表达式将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。逗号表达式在printf()函数中使用的一般格式为printf("
",
)。格式化字符串由格式控制、和输出表列两部分组成,其中格式控制包含格式声明和普通字符。
在代码中,%d作为格式声明部分已经控制了输出值只能为十进制数,因此其输出值是实际值向下取整的结果。由取值x=10与y=3,z的值应当为10/3,也就是3.33333333······。但由于添加了流控制,输出结果只能为3。
除了整数限制以外,代码中的\n是普通字符中的换行符,表示输出后控制移到下一行的开头。
扩展资料:
逗号表达式最重要的特点就是其优先级最低。逗号表达式本身无难度,常常与赋值运算符一起考,考查学生对这两个知识点的理解和考生观察是否细心。如下题:
题目:以下程序的输出结果是:
main()
{
int x,y,z;
x=1;
y=1;
z=x ,y , y;
printf("%d,%d,%d\n",x,y,z);
}
[A]2,3,3 [B]2,3,2 [C]2,3,1 [D]1,1,1
解析:
x和y的值经过自增以后分别为2和3,D可以排除。剩下3个选项选择什么呢?
如果是(x ,y , y)实际上可以看成(1,1,3)整个逗号表达式的值应该是3,那么选A。
如果是(x , y,y )实际上可以看成(1,2,2)整个逗号表达式的值应该是2,那么选B。
但这是错的,这儿还有赋值运算符。赋值运算符的优先级是14,而逗号表达式的优先级是15,也就是说上面的表达式中应该等价于这样的结合:(z=x ),y , y;如果这样写的话,则答案很清晰,为:2,3,1
正确答案选C。
参考资料来源:百度百科-printf
参考资料来源:百度百科-逗号表达式
逗号表达式的使用:一个很多步骤的功能,需要有进度提示,需要分配每个过程的起点和步数,而起点和前面的步数有关系。所以,需要一个变量来累计步数,可以将变量隐藏在宏中,而宏用逗号表达式实现。
表达式1,表达式2,表达式3,...... ,表达式n。例:x=2,y=3,z=4。逗号表达式具有从左至右的结合性,即先求解表达式1,然后依次求解表达式2,直到表达式n的值。表达式n的值就是整个逗号表达式的值。上述的逗号表达式的值就是表达式z=4的值4。
扩展资料
逗号运算符,c语言提供一种特殊的运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。在c语言中,逗号除了作为分隔符,还可以用作一种运算符--逗号运算符,用逗号运算符将几个表达式连接起来。
逗号表达式的要领:逗号表达式的运算从左往右逐个计算表达式。逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。 逗号运算符的优先级别在所有运算符中最低。
如:(3 5,6 8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3 5,6 8)的值是14,a=(a=3*5,a*4)的值是60,而(a=3*5,a*4)的值是60, a的值在逗号表达式里一直是15,最后被逗号表达式赋值为60,a的值最终为60。
参考资料百度百科--逗号表达式
逗号表达式的一般形式是:表达式1,表达式2,表达式3……表达式n
逗号表达式的求解过程是:先计算表达式1的值,再计算表达式2的值,……一直计算到表达式n的值。最后整个逗号表达式的值是表达式n的值。
z=(x%y,x/y) 先计算x%y =1,再计算x/y=3,然后 z=(1,3)=3
因为逗号运算符总是是取最后一个,10/3求整就是答案3 了
表达式1,表达式2,表达式3,...... ,表达式n
逗号表达式的要领:
1.逗号表达式的运算过程为:从左往右逐个计算表达式。
2.逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。
3.逗号运算符的优先级别在所有运算符中最低。
在代码中,%d作为格式声明部分已经控制了输出值只能为十进制数,因此其输出值是实际值向下取整的结果。由取值x=10与y=3,z的值应当为10/3,也就是3.33333333······。但由于添加了流控制,输出结果只能为3。
除了整数限制以外,代码中的\n是普通字符中的换行符,表示输出后控制移到下一行的开头。
扩展资料
c语言的优点有以下:
1.简洁紧凑、灵活方便。
C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2.运算符丰富。
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3.数据类型丰富。
C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。
4.表达方式灵活实用。
C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。它语法限制不太严格,程序设计自由度大,如对整型量与字符型数据及逻辑型数据可以通用等。
5.允许直接访问物理地址,对硬件进行操作。
由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位(bit)、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。
6.生成目标代码质量高,程序执行效率高。
C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编程序生成的目标代码效率低10%~20%。
7.可移植性好。
C语言在不同机器上的C编译程序,86%的代码是公共的,所以C语言的编译程序便于移植。在一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行。
8.表达力强。
C语言有丰富的数据结构和运算符。包含了各种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。C语言的运算符有34种,范围很宽,灵活使用各种运算符可以实现难度极大的运算。
参考资料来源:百度百科--逗号表达式
参考资料来源:百度百科--c语言
参量表>
格式化字符串>
逗号表达式怎么用
逗号表达式的使用:一个很多步骤的功能,需要有进度提示,需要分配每个过程的起点和步数,而起点和前面的步数有关系。所以,需要一个变量来累计步数,可以将变量隐藏在宏中,而宏用逗号表达式实现。
表达式1,表达式2,表达式3,...... ,表达式n。例:x=2,y=3,z=4。逗号表达式具有从左至右的结合性,即先求解表达式1,然后依次求解表达式2,直到表达式n的值。表达式n的值就是整个逗号表达式的值。上述的逗号表达式的值就是表达式z=4的值4。
扩展资料
逗号运算符,c语言提供一种特殊的运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。在c语言中,逗号除了作为分隔符,还可以用作一种运算符--逗号运算符,用逗号运算符将几个表达式连接起来。
逗号表达式的要领:逗号表达式的运算从左往右逐个计算表达式。逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。 逗号运算符的优先级别在所有运算符中最低。
如:(3 5,6 8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3 5,6 8)的值是14,a=(a=3*5,a*4)的值是60,而(a=3*5,a*4)的值是60, a的值在逗号表达式里一直是15,最后被逗号表达式赋值为60,a的值最终为60。
参考资料百度百科--逗号表达式
c语言 逗号表达式
c语言逗号表达式是由左向右进行的:k=3*2=6,K 2=8,表达式返回8。
逗号表达式用法:当顺序点用,结合顺序是从左至右,用来顺序求值,完毕之后整个表达式的值是最后一个表达式的值。
注意:逗号运算符( , )是C语言运算符中优先级最低的一种运算符。
在for里面的应用:
int i;int j;
for(i=0,j=0;i<5;i ,j )
扩展资料:
分析:A语言规定,函数调用时实参与实参之间是用逗号隔开的,所以函数调用语句中包含3个实参,其中第一个实参是rec1,第二个实参是rec2 rec3,第三个实参是(rec4,rec5),这里的第三个实参就是一个逗号表达式,根据逗号表达式的运算规则,第三个实参的值应该等于rec5的值。
参考资料来源:百度百科-逗号表达式
int main(){
int k = 0;
int i = ((k=3*2, k 4), k 2);
printf("value = %d\n", i);
}
结果:value = 8
逗号表达式从左往右计算,但返回右边的数据值作为表达式值;
1. k = 3*2 // k = 6;
2. (6, k 4) // 表达式返回10, k仍为6
3. (10, k 2) // k为6,表达式返回8
逗号表达式的规则是先算左边的,然后表达式的值为右边的值,所以首先k=3*2=6,K 2=8,所以整个表达式的值为8.建议你去看看c语言语法
逗号运算符是依次以从左到右的结合顺序进行运算,然后取最右边算式的值作为返回值。因此这个表达式的计算流程是:由于有括号运算符所以先对其进行运算,逗号运算符从左到右先计算k=3*2,此时k=6;然后计算k 4,此时k=10,返回;这里又有一个逗号运算符,由于左边算式已经计算完毕因此继续计算右边k 2,并作为(k=3*2,k 4),k 2这个表达式的返回值,值为12。同样,由于最后对k进行 2运算因此k的最终值也为12
逗号表达式是依次向右进行计算。首先给k赋值6,然后K 4,注意,此时只是将k 4,并没有说k=k 4,然后在括号外,K 2,由于k仍为6.所以最后得出6 2,为8
c语言逗号表达式是由左向右进行的:k=3*2=6,K 2=8,表达式返回8。
逗号表达式用法:
当顺序点用,结合顺序是从左至右,用来顺序求值,完毕之后整个表达式的值是最后一个表达式的值。
示例:
main()
{int a,s,d;
s=2;
d=3;
a=12 (s 2,d 4);
}
扩展资料
注意事项
(1) 逗号表达式的运算过程为:从左往右逐个计算表达式。
(2) 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。
(3) 逗号运算符的优先级别在所有运算符中最低。
C语言中的逗号表达式 是怎么计算的 如果两值或两式子之间有个逗号 那结果是什么
逗号表达式的值是最后一个表达式的值。
比如
c=(1,2,3,4,5);
那么c的值就是5
逗号在C语言中,有两种形式:
1.通常的逗号。例如:printf("%d%d",a,b);
2.称为逗号表达式,即可以构成逗号表达式.例如:
main()
{
int
a,b,c;
a=1;
b=2;
c=(a b,b-a);
printf("%d",c);
/*输出的正确答案应该是b-a的值为1,即答案应该是逗号表示式中最后一个表达式的值,如果碰到括号里面还有括号,一定要仔细看清楚,那个是最后一个表达式,这种题型很容易出现用来忽悠人,加油!*/
}
C语言逗号表达式
逗号表达式的优先级是所有运算运算符里最低的,它又是左集合
y=(x=a b),(b c);该等式等价于:
x=a b;
y=x;
b c;
而y=((x=a b),(b c));等价于:
x=a b;
y=b c;
忘采纳!
c语言提供一种特殊的运算符,逗号运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。如:(3 5,6 8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3 5,6 8)的值是14;a=(a=3*5,a*4)的值是60,其中(a=3*5,a*4)的值是60, a的值在逗号表达式里一直是15,最后被逗号表达式赋值为60,a的值最终为60。
所以你的那个a是15,然后a 15等于30。
c语言中逗号指的是什么意思?
C语言中的逗号有2种意思:
1.表示"分隔号"的意思,就和语文中的逗号一个意思;
2.表示"逗号运算符"的意思,用它将2个表达式连接起来.例如:
3 5,6 8
就称为逗号表达式,又称为"顺序求值运算符".逗号表达式的一般形式为
表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2.整个逗号表达式的值是表达式2的值.例如,上面的表达式"3 5,6 8"的值是14.
分隔符的意思,表示和后面是一条语句
逗号有"分隔符"的意思,还是 "逗号运算符"
分隔符号,优先等级15
C语言中的逗号有两种意思:
1、表示"分隔号"的意思,就和语文中的逗号一个意思;
2、表示"逗号运算符"的意思,用它将2个表达式连接起来.例如:
3 5,6 8:就称为逗号表达式,又称为"顺序求值运算符"。逗号表达式的一般形式为表达式1,表达式2。逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如:上面的表达式"3 5,6 8"的值是14。
扩展资料:
运算符号:
比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补 0)位移。例如,将 11100011 右移 3 比特,算术右移后成为 11111100,逻辑右移则为 00011100。
因算术比特右移较适于处理带负号整数,所以几乎所有的编译器都是算术比特右移。
运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。
数据类型:
C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。
常量与变量:
常量其值不可改变,符号常量名通常用大写。变量是以某标识符为名字,其值可以改变的量。
标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。
数组:
如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,方括内的索引值是从0算起的。
参考资料:
百度百科-C语言
c 中,逗号表达式(x=45,x5),x 25的值怎么求?
x*5和x 25是不会改变x的值的,x应该是20
逗号表达式(x=4*5,x*5),x 25
不妨另设一个变量a,并赋值:
a=((x=4*5,x*5),x 25);①
注意一定要在最外面再加一个括号。否则,是这样的:
a=(x=4*5,x*5),x 25;②
这样会把a=(x=4*5,x*5)与x 25割裂开了,成了一个新的逗号表达式。
所以,①才是唯一正确的解释。
看一看这有两个逗号、两个括号的表达式的值究竟是什么:
它由三个表达式构成(下面也是运行过程和执行顺序):
表达式一:x=4*5=20(这一句有赋值作用)
表达式二:x*5=20*5=100
表达式三:x 25=20 25=45
大表达式四:a=((x=4*5,x*5),x 25)
=((20,100),45)=(100,45)=45
根据逗号表达式的定义,看一下①的结构,它的值等于最后一个表达式的值,即表达式三的值,所以,①的结果是45并把它赋值给a。
再来看②,它由两个表达式组成,前一个又由两个表达式组成,运行顺序是:
①表达式一:x=4*5=20(这一句给x赋值20)
②表达式二:x*5=20*5=100
③前一个大表达式三:a=(x=4*5,x*5)=(20,100)=100(这一句给a赋值)
④表达式四:x 25=20 25=45
可以看出,两者得到的a的值并不相同,正确的一个是45,错误的一个是100。
现在看你发的图片中的问题,你输出的是:
cout<<(x=4*5,x*5),x 25;
实际上,你输出了前面一部分(x=4*5,x*5)的值,而把后面的x 25忽略掉了。
你试一试:
cout<<((x=4*5,x*5),x 25);
看看是不是45了?
C语言 逗号表达式
它这里输出的是一个逗号表达式:(a 2,c 2),先说明一下,逗号表达式的运算法则,它是从左往右算,输出最右边的一个值,你这里c='a'就是c=65,求出就是c 2=67,最后整型转化成为浮点型输出:67.00000,关于逗号表达式,有一种陷阱就是:a=2求(a 2,a 3)很容易使人算到是7,其实还是a 3=5,请注意
(a 2,c 2)这个为逗号表达式
逗号表达式从左向右执行,最后一个执行的结果作为逗号表达式的返回值
即c 2的结果为逗号表达式的返回值,所以最后输出的是c 2的值
(x=a b),(b c) 是一个逗号表达式,整个表达式的值为最后一个式子的值,但是逗号表达式要从左向右计算,这个等价于
(x=2 4),(b c)
===>
6,(4 6)
====>
6,10
即表达式值为10
把10赋值给y
,则y的值就是10