逗号运算表达式的结果取决于,逗号表达式的值是第一个表达式的值

http://www.itjxue.com  2023-01-06 15:42  来源:未知  点击次数: 

C语言逗号表达式

逗号表达式的作用:

将多个表达式连接,构成一个更大的表达式;

一般形式:

求解过程是从左至右,既先算 表达式1 ,然后是 表达式2 ,最后是 表达式n

表达式结果:

逗号表达式的结果为最后一个表达式的结果,既 表达式n 的结果

示例:

输出: c:5

注意事项:

逗号运算符的优先级是最低的,需要注意与其他运算符之间的结合

a 的值为 5 ,因为逗号表达式的值为最后一个表达式的结果既 c + 3 = 5 ;

表达式最终的值为 5 ,但是此时 a 的值是 2 ,因为赋值运算符的优先级比逗号运算符高,所以先进行赋值运算;

c语言中的逗号运算

(a=b,b+3)

计算的顺序是先计算a=b,再计算b+3,

整个(a=b,b+3)的值是b+3的值,

逗号运算是从左至右依次计算每个表达式,最后的结果是最右边的表达式的值

int

a=0,b=0,c=0;

c=(a-=a-5),(a=b,b+3);

最后的结果是a=0,b=0,c=3

运算的顺序的先计算(a-=a-5)得出a=0-(0-5)=5,再计算a=b=0,最后计算b+3=3;整个逗号表达式的值是3,然后赋给c,所以c=3

while (scanf("%d",&a),a

按照逗号表达式的计算规则和计算顺序

这句话是当用户输入一个正数时终止循环

如果是非正数则无限再次让用户输入,直到达到目标为止

逗号运算符从左向右计算,以最后一个子表达式的值为最终值

关于c语言中逗号表达式

等下。。答错了。。还需要理解一下神马是逗号表达式。。我前面说的和uuyyhhjj与delta_charlie的意思一样,但其实我们都搞错了。你可以自己把我们的例子都运行一下,看看是不是这样。下面我感觉应该是我正确的理解。

逗号表达式是所有运算符中优先级最低的,比赋值运算符还要低。他的作用就是把每个表达式都算一遍,并且把最后一个表达式返回的值作为逗号表达式的值。(把其他的都不管了)

像你说的那个,如果是

x=200,500;

(没有括号),x就会等于200,然后上面整个式子的值是500。

但是有括号的话, (200,500) 就是一个单独的式子,他的值是500,所以x=(200,500)最后赋值给x就是500

举几个例子,

x=(21,22,23,24,25);

这个里面,先算括号里的,前面的21到24算过后都被丢弃,括号里的表达式的值是25。之后执行赋值运算,x的值就变成括号里表达式的值,25了。

如果编译

int x;

int a;

x=(21,22,23,24,25);

cout"x="xendl;

会输出

x=25

x=21,22,23,24,25;

这行整个是一个表达式。

逗号运算符会分别计算表达式x=21、22、23 、24、25(单独一个数字也可以叫做表达式)。

然后他会用最后一个表达式作为逗号表达式的值。所以整个式子(整个一行)的值是25。但是因为这个值并没有返回给别的变量,他就也被丢弃了。

如果编译

int x;

x=21,22,23,24,25;

coutx;

输出是21。

a=(x=21,22,23,24,25);

这个里面,除了给x赋值,它又把逗号表达式的值25赋给a。

如果编译

int x;

int a;

a=(x=21,22,23,24,25);

cout"x="xendl;

cout"a="aendl;

会输出

x=21

a=25

a=(x=21,22,23,24,x*25);这个里,赋值给x之后又利用x计算了逗号表达式的值,21*25,最后把这个值赋给a

如果编译

int x;

int a;

a=(x=21,22,23,24,x*25);

cout"x="xendl;

cout"a="aendl;

会输出

x=21

a=525

简单来说,逗号的作用就是执行每一个表达式,然后用最后一个表达式作为他它的值。

看这个可能可以帮助你理解

如有疑问,欢迎您的追问。

关于逗号运算符问题

运行结果是1.000000

我的理解是

t=1,这个没错,

t+5,这里t没有变

t++,利用的使用t还是没有变,下一次在用到t的时候,t就变成2了

这是t++的特性(用了以后再变),++t是变了后再用

逗号运算符的最终结果是最后一个表达式的结果,也就是t++的结果,但是这里是用了在自加,所以t还是1

c语言中k=(a=2,b=3)是什么意思

这就相当于是一个赋值语句,()里是一个逗号表达式,逗号表达式最终结果取决于最后一个式子,所这个语句的意思是: k=b 即 k=3;

如下程序:

#include stdio.h

main()

{ int a,b;

int k=(a=2,b=3);

printf("%d\n",k);

}

运行结果为:

3

Press any key to continue

希望能对楼主有所帮助!

(责任编辑:IT教学网)

更多

推荐程序员考试文章